[Pkg-zfsonlinux-devel] WIP branch for SPL 0.7.0

Fabian Grünbichler f.gruenbichler at proxmox.com
Thu Aug 10 12:41:29 UTC 2017


I started a WIP branch for updating the spl packages in unstable to 0.7.

I did some rough testing together with my WIP branch for ZFS 0.7.0, and
basic operations seem to work fine.

feedback (and further work based on this) welcome.

not done in my branch/tag:
- check d/copyright for updates
- generate new changelog
- incorporate man page fixes I submitted upstream to get rid of some
  lintian warnings

The following changes since commit b6358351cca47024ffb421bf986f2a949608188e:

  Update changelog for new upstream release (2017-07-17 14:18:30 +0800)

are available in the git repository at:

  https://github.com/Fabian-Gruenbichler/spl.git tags/debian/wip-0.7-v1

for you to fetch changes up to a53f8da59809ad753eaf301a7a050cc847de1c14:

  Merge tag 'spl-0.7.0' into test (2017-08-08 09:09:32 +0200)

Alex McWhirter (1):
      _ILP32 is always defined on SPARC

Alexander Pyhalov (1):
      Fix modules installation directory

Andrey Vesnovaty (2):
      Expose max/min objs per slab and max slab size
      Evenly distribute the taskq threads across available CPUs

Boris Protopopov (1):
      Add a script to display SPL slab cache statistics

Brian Behlendorf (138):
      Automake 1.10.1 compat: AM_SILENT_RULES
      Replace the SPL_AC_META perl dependency with awk
      Add additional dependencies for DKMS package
      Add msec/usec/nsec to tick convertors
      Fix delay()
      Fix taskq_wait_id()
      Add ASSERT0 and VERIFY0 macros
      Fix ASSERT0 and VERIFY0 macro typo
      Merge branch 'linux-3.10'
      Fix --enable-debug-kmem-tracking option
      Fix bogus kmem leak warning
      Improve build instructions
      Return -1 for generic kmem cache shrinker
      Fix KMC_OFFSLAB type caches
      Add kmod repo integration
      Tag spl-0.6.2
      Consistently use local_irq_disable/local_irq_enable
      Revert "Add KSTAT_TYPE_TXG type"
      Merge branch 'kstat'
      Retroactively fix bogus %changelog date
      Add module versioning
      Include linux/vmalloc.h for ARM and Sparc
      Remove default taskq thread to CPU bindings
      Remove incorrect use of EXTRA_DIST for man pages
      splat kmem:slab_reclaim: Test cleanup
      splat cred:groupmember: Fix false positives
      Add KMC_SLAB cache type
      Add spl_kmem_cache_reclaim module option
      Restrict release number to META version
      Fix DKMS package upgrade and packager
      Tag spl-0.6.3
      Rate limit debugging stack traces
      Set spl_kmem_cache_reclaim=0 to default
      Set spl_kmem_cache_slab_limit=16384 to default
      Fix bug in SPLAT taskq:front
      Make license compatibility checks consistent
      Update SPLAT to use kmutex_t for portability
      Update code to use misc_register()/misc_deregister()
      Remove patches directory
      Remove adaptive mutex implementation
      Remove sysctl_vfs_cache_pressure assumption
      Remove utsname() wrapper
      Remove register_sysctl() compatibility code
      Remove CTL_UNNUMBERED sysctl interface
      Map highbit64() to fls64()
      Simplify the time compatibility wrappers
      Remove atomic64_xchg() wrappers
      Remove uintptr_t typedef
      Remove linux/uaccess.h header check
      Remove kmalloc_node() compatibility code
      Remove i_mutex() configure check
      Remove mutex_lock_nested() wrapper
      Remove on_each_cpu() wrapper
      Remove get_vmalloc_info() wrapper
      Remove global memory variables
      Remove shrink_{i,d}node_cache() wrappers
      Remove kallsyms_lookup_name() wrapper
      Remove user_path_dir() wrapper
      Remove set_fs_pwd() configure check
      Add vfs_unlink() and vfs_rename() comments
      Remove credential configure checks.
      Update put_task_struct() comments
      Remove proc_handler() wrapper
      Remove kvasprintf() wrapper
      Remove kern_path() wrapper
      Remove vfs_fsync() wrapper
      Merge branch 'cleanup'
      Lower minimum objects/slab threshold
      Retire legacy debugging infrastructure
      Fix debug object on stack warning
      Refactor existing code
      Fix kmem cstyle issues
      Refactor generic memory allocation interfaces
      Make slab reclaim more aggressive
      Update spl-module-parameters(5) man page
      Reduce kmem cache deadlock threshold
      Refine slab cache sizing
      Fix kmem cache deadlock logic
      Use __get_free_pages() for emergency objects
      Merge branch 'kmem-rework'
      Fix GFP_KERNEL allocations flags
      Optimize vmem_alloc() retry path
      Retire spl_module_init()/spl_module_fini()
      Fix cstyle issue in mutex.h
      Retire MUTEX_OWNER checks
      Add MUTEX_FSTRANS mutex type
      Reduce splat_taskq_test2_impl() stack frame size
      Remove rpm/fedora directory
      Add RHEL style kmod packages
      Clear PF_FSTRANS over vfs_sync()
      Tag spl-0.6.4
      Fix cstyle issues in spl-tsd.c
      Add boot_ncpus macro
      Retire rwsem_is_locked() compat
      Rename cv_wait_interruptible() to cv_wait_sig()
      Add IMPLY() and EQUIV() macros
      Add TASKQ_DYNAMIC feature
      Set TASKQ_DYNAMIC for kmem and system taskqs
      Add memory compatibility wrappers
      Default to --disable-debug-kmem
      Add defclsyspri macro
      Remove skc_ref from alloc/free paths
      Invert minclsyspri and maxclsyspri
      Remove needfree, desfree, lotsfree #defines
      Linux 4.2 compat: vfs_rename()
      Revert "Create a new thread during recursive taskq dispatch if necessary"
      Linux 4.2 compat: misc_deregister()
      Tag spl-0.6.5
      Fix PAX Patch/Grsec SLAB_USERCOPY panic
      Fix spl-dkms uninstall/update
      Fix CPU hotplug
      Limit maximum object size in kmem tests
      Fix --enable-linux-builtin
      Revert "Make taskq_member() use ->journal_info"
      Either _ILP32 or _LP64 must be defined
      Fix cstyle issues in spl-taskq.c and taskq.h
      Revert "Skip GPL-only symbols test when cross-compiling"
      Fix do_div() types in condvar:timeout
      Add spl_kmem_cache_kmem_threads man page entry
      Linux 4.5 compat: pfn_t typedef
      Remove RLIM64_INFINITY assert in vn_rdwr()
      Remove RPM package restriction
      Add rw_tryupgrade()
      Linux 4.8 compat: rw_semaphore atomic_long_t count
      Tag 0.7.0-rc1
      Increase spl_kmem_alloc_warn limit
      Fix automatically generated release number
      Fix aarch64 type warning
      Fix p0 initializer
      Tag 0.7.0-rc2
      Tag 0.7.0-rc3
      Fix powerpc build
      Tag 0.7.0-rc4
      Fix cv_timedwait timeout
      Don't cache the system hostid
      Tag 0.7.0-rc5
      Linux 4.13 compat: wait queues
      Tag spl-0.7.0

Chip Parker (1):
      Ensure spl/ only occurs once in core-y

Chris Dunlop (2):
      Add crgetzoneid() stub
      Make taskq_wait() block until the queue is empty

Chunwei Chen (38):
      Add ddi_time_after and friends
      Fix crash when using ZFS on Ceph rbd
      Linux 3.15 compat: NICE_TO_PRIO and PRIO_TO_NICE
      Linux 3.15: vfs_rename() added a flags argument
      mutex: force serialization on mutex_exit() to fix races
      Fix spl_hostid module parameter
      Make tsd_set(key, NULL) remove the tsd entry for current thread
      Restructure uio to accommodate bio_vec
      Don't take spin lock on rwlock owner
      rwsem use kernel provided owner when possible
      Use tab indent in rwlock.h
      Don't call kmem_cache_shrink from shrinker
      Don't use tq->tq_lock_flags
      Use spl_fstrans_mark instead of memalloc_noio_save
      Don't hold mutex until release cv in cv_wait
      Turn on both PF_FSTRANS and PF_MEMALLOC_NOIO in spl_fstrans_mark
      Use tsd to store tq for taskq_member
      Allow kicking a taskq to spawn more threads
      Use kernel provided mutex owner
      Add cv_timedwait_sig_hires to allow interruptible sleep
      Linux 4.7 compat: inode_lock() and friends
      Restore CALLOUT_FLAG_ABSOLUTE in cv_timedwait_hires
      Fix race between taskq_destroy and dynamic spawning thread
      Fix taskq_wait_outstanding re-evaluate tq_next_id
      Implement a proper rw_tryupgrade
      Fix use-after-free in splat_taskq_test7
      Fix crgetgroups out-of-bound and misc cred fix
      Fix splat-cred.c cred usage
      Linux 4.9 compat: group_info changes
      Limit number of tasks shown in taskq proc
      Add system_delay_taskq for long delay
      Fix splat memleak
      Refactor some splat macro to function
      Use kernel slab for vn_cache and vn_file_cache
      Linux 4.12 compat: PF_FSTRANS was removed
      Improve gitignore
      config: allow --with-linux without --with-linux-obj
      Fix RWSEM_SPINLOCK_IS_RAW check failed

Clemens Fruhwirth (2):
      Remove stale comment from rw_tryupgrade()
      Add support for rw semaphore under PREEMPT_RT_FULL

Cyril Plisko (2):
      Kstat to use private lock by default
      Tighten spl dependency on spl-kmod

David Quigley (2):
      Add a macro to convert seconds to nanoseconds and vice-versa
      Add a PAGESHIFT definition

Dimitri John Ledkov (2):
      spl-kmem-cache: include linux/prefetch.h for prefetchw()
      Add support for s390[x].

Etienne Dechamps (1):
      Fix various generic kmod RPM spec issues.

Fabian Grünbichler (1):
      Merge tag 'spl-0.7.0' into test

GeLiXin (1):
      Fix: handle NULL case in spl_kmem_free_track()

George Melikov (1):
      Remove identical if statements in module/spl/spl-vnode.c

Hajo Möller (1):
      Fix warning about AM_INIT_AUTOMAKE arguments

James H (1):
      Modify gethrestime to use current_kernel_time()

Jan Engelhardt (4):
      build: resolve orthographic and other grammatical errors
      build: use CPPFLAGS
      gitignore: anchor entries at their respective directory
      build: do not call boilerplate ourself

Jason Zaman (1):
      sysmacros: Make P2ROUNDUP not trigger int overflow

Jinshan Xiong (1):
      Improve spl slab cache alloc

Jorgen Lundman (1):
      Add support for aarch64 (ARMv8)

Kamil Domanski (1):
      Skip GPL-only symbols test when cross-compiling

Kamil Domański (1):
      Skip GPL-only symbols test when cross-compiling

Kevin Tanguy (1):
      Add support for recent kmem_cache_create_usercopy

Kohsuke Kawaguchi (1):
      Document how to run SPLAT

LOLi (1):
      Avoid WARN() from procfs on kstat collision

Marcel Wysocki (1):
      Add config/compile to config/.gitignore

Matthew Thode (1):
      Copy spl.release.in to kernel dir

Nathaniel Clark (1):
      Add --buildroot option to kmod build

Ned Bass (5):
      Add kpreempt() compatibility macro
      3537 add kstat_waitq_enter and friends
      Emulate illumos interface cv_timedwait_hires()
      Linux 3.17 compat: remove wait_on_bit action function
      Remove compat includes from sys/types.h

Nikolay Borisov (2):
      Add gitignore entry for spl-*.o.d files
      Add handling for kernel 4.7's CONFIG_TRIM_UNUSED_KSYMS

Olaf Faaland (9):
      Add new lock types MUTEX_NOLOCKDEP, and RW_NOLOCKDEP
      Fix lockdep warning in spl_inode_{lock,unlock}
      Subclass tq_lock to eliminate a lockdep warning
      Create spl-kmod-debuginfo rpm with redhat spec file
      Linux 4.11 compat: set_task_state() removed
      Linux 4.11 compat: vfs_getattr() takes 4 args
      Linux 4.11 compat: add linux/sched/signal.h
      Linux 4.11 compat: remove stub for __put_task_struct
      glibc 2.25 compat: remove assert(X=Y)

Oleg Drokin (1):
      Module parameter to enable spl_panic() to panic the kernel

Prakash Surya (3):
      Add callbacks for displaying KSTAT_TYPE_RAW kstats
      Add wrappers for accessing PID and command info

RageLtMan (1):
      Update struct member intializers to C89

Richard Yao (25):
      Linux 3.10 compat: Do not rely on struct proc_dir_entry definition
      Linux 3.11 compat: Replace num_physpages with totalram_pages
      Fix race in spl_kmem_cache_reap_now()
      PaX/GrSecurity Linux 3.8.y compat: Use __no_const on struct ctl_table
      Linux 3.8 compat: Use kuid_t/kgid_t when required
      Replace current_kernel_time() with getnstimeofday()
      Define SET_ERROR()
      Linux 3.12 compat: New shrinker API
      Linux 3.13 compat: Remove unused flags variable from __cv_init()
      Linux 3.13 compat: Pass NULL for new delegated inode argument
      Simplify hostid logic
      Change spl_kmem_cache_expire default setting to 2
      Cleanup vn_rename() and vn_remove()
      kmem_cache: Call constructor/destructor on each alloc/free
      Kernel header installation should respect --prefix
      Revert "Add PF_NOFS debugging flag"
      Add hooks for disabling direct reclaim
      Enforce architecture-specific barriers around clear_bit()
      vn_getf/vn_releasef should not accept negative file descriptors
      Implement areleasef()
      Disable direct reclaim in taskq worker threads on Linux 3.9+
      Fix race between getf() and areleasef()
      Make taskq_member() use ->journal_info
      kobj_read_file: Return -1 on vn_rdwr() error
      random_get_pseudo_bytes() need not provide cryptographic strength entropy

Tim Chase (21):
      Fix --enable-debug-kmem-tracking option
      Support post-3.13 kthread_create() semantics.
      De-inline spl_kthread_create().
      Call kthread_create() correctly with fixed arguments.
      Safer debugging and assertion macros.
      Add functions and macros as used upstream.
      Add atomic_swap_32() and atomic_swap_64()
      Linux 3.12 compat: shrinker semantics
      Use current_kernel_time() in the time compatibility wrappers
      Add mutex_enter_nested() which maps to mutex_lock_nested()
      Set HAVE_FS_STRUCT_SPINLOCK correctly when CONFIG_FRAME_WARN==1024
      Don't allow shrinking a PF_FSTRANS context
      Include other sources of freeable memory in the freemem calculation
      Create a new thread during recursive taskq dispatch if necessary
      Create a new thread during recursive taskq dispatch if necessary
      Additional dkio support for TRIM/Discard
      Provide kstat for taskqs
      Allow spawning a new thread for TQ_NOQUEUE dispatch with dynamic taskq
      Use vmem_free() in dfl_free() and add dfl_alloc()
      Clear PF_FSTRANS over spl_filp_fallocate()
      Fix HAVE_MUTEX_OWNER test for kernels prior to 4.6

Tom Caputi (2):
      Changes to support zfs encryption
      Added highbit() and lowbit() macros

Tom Prince (1):
      Install header during post-build rather than post-install.

Tony Hutter (1):
      Add _ALIGNMENT_REQUIRED to isa_defs.h for checksums

Turbo Fredriksson (7):
      Support .nogitrelease file
      Add --bump=0 to alien
      Ignore *.{deb,rpm,tar.gz} files in the top directory.
      Document SPL module parameters.
      Set LANG to a reasonable default (C)
      Linux 3.16 compat: smp_mb__after_clear_bit()
      Support parallel build trees (VPATH builds)

Ubuntu (2):
      Fix vmem_size()

YunQiang Su (1):
      Add isa_defs for MIPS

Yuxuan Shui (4):
      Linux 3.10 compat: struct vmalloc_info moved
      Linux 3.10 compat: replace PDE()->data with PDE_DATA()
      Linux 3.10 compat: add missing include of linux/slab.h
      This patch add a CTASSERT macro for compile time assertion.

clefru (1):
      Reimplement rt_mutex_owner to fix build with DEBUG & PREEMPT_RT_FULL

legend-hua (1):
      Fix spl check.sh script

loli10K (1):
      Remove superfluous `newline` character

marku89 (1):
      Define the needed ISA types for Sparc

stf (1):
      Avoid PAGESIZE redefinition

tuxoko (5):
      Fix taskq dynamic spawning
      Prevent rm modules.* when make install
      Cleanup in cred.h
      Linux 4.8 compat: Fix RW_READ_HELD
      Fix out-of-bound in per_cpu in spl_random_init

zgock (1):
      Fix build issue on some configured kernels

 configure.ac                     |     2 +
 configure                        | 20970 -------------------------------------
 Makefile.in                      |  1083 --
 cmd/Makefile.am                  |    12 +-
 cmd/Makefile.in                  |   601 --
 cmd/splat/Makefile.am            |    11 +
 cmd/splslab/Makefile.am          |     2 +
 include/Makefile.in              |   679 --
 include/fs/Makefile.in           |   520 -
 include/linux/Makefile.in        |   540 -
 include/rpc/Makefile.in          |   522 -
 include/sharefs/Makefile.in      |   520 -
 include/sys/Makefile.am          |     1 +
 include/sys/Makefile.in          |   868 --
 include/sys/fm/Makefile.in       |   522 -
 include/sys/fs/Makefile.in       |   520 -
 include/sys/sysevent/Makefile.in |   521 -
 include/util/Makefile.in         |   522 -
 include/vm/Makefile.in           |   524 -
 lib/Makefile.in                  |   556 -
 man/Makefile.in                  |   616 --
 man/man1/Makefile.in             |   500 -
 man/man5/Makefile.in             |   500 -
 rpm/Makefile.in                  |   616 --
 rpm/generic/Makefile.in          |   422 -
 rpm/redhat/Makefile.in           |   422 -
 scripts/Makefile.in              |   417 -
 cmd/{ => splat}/splat.h          |     0
 include/linux/rwsem_compat.h     |     9 +-
 include/linux/wait_compat.h      |     9 +
 include/sys/byteorder.h          |    23 +
 include/sys/condvar.h            |     8 +-
 include/sys/cred.h               |    12 -
 include/sys/debug.h              |     5 +
 include/sys/dkio.h               |    18 +-
 include/sys/dkioc_free_util.h    |    58 +
 include/sys/isa_defs.h           |    30 +
 include/sys/kmem_cache.h         |     2 +-
 include/sys/kobj.h               |     4 +-
 include/sys/mutex.h              |    42 +-
 include/sys/random.h             |     7 +-
 include/sys/rwlock.h             |   205 +-
 include/sys/sunldi.h             |    19 -
 include/sys/sysmacros.h          |     8 +
 include/sys/taskq.h              |   116 +-
 include/sys/time.h               |     6 +
 include/sys/tsd.h                |     1 +
 include/sys/user.h               |     4 +-
 module/splat/splat-internal.h    |    78 +-
 rpm/generic/spl-dkms.spec.in     |    11 +-
 rpm/generic/spl-kmod.spec.in     |    73 +-
 rpm/generic/spl.spec.in          |    74 +-
 rpm/redhat/spl-dkms.spec.in      |    72 +-
 rpm/redhat/spl.spec.in           |   106 +-
 spl_config.h.in                  |   209 -
 cmd/{ => splat}/splat.c          |     0
 module/spl/spl-condvar.c         |    65 +-
 module/spl/spl-err.c             |    14 +
 module/spl/spl-generic.c         |   269 +-
 module/spl/spl-kmem-cache.c      |    58 +-
 module/spl/spl-kmem.c            |     4 +-
 module/spl/spl-kobj.c            |    11 +-
 module/spl/spl-kstat.c           |    29 +
 module/spl/spl-proc.c            |   267 +-
 module/spl/spl-rwlock.c          |    36 +-
 module/spl/spl-taskq.c           |   371 +-
 module/spl/spl-tsd.c             |    27 +
 module/spl/spl-vmem.c            |    34 +-
 module/spl/spl-vnode.c           |    17 +-
 module/splat/splat-atomic.c      |     7 +-
 module/splat/splat-condvar.c     |    20 +-
 module/splat/splat-cred.c        |    12 +-
 module/splat/splat-ctl.c         |    88 +-
 module/splat/splat-generic.c     |    24 +-
 module/splat/splat-kmem.c        |    76 +-
 module/splat/splat-kobj.c        |     8 +-
 module/splat/splat-linux.c       |     4 +-
 module/splat/splat-list.c        |    28 +-
 module/splat/splat-mutex.c       |    46 +-
 module/splat/splat-random.c      |     4 +-
 module/splat/splat-rwlock.c      |    60 +-
 module/splat/splat-taskq.c       |    75 +-
 module/splat/splat-thread.c      |    15 +-
 module/splat/splat-time.c        |     8 +-
 module/splat/splat-vnode.c       |    24 +-
 module/splat/splat-zlib.c        |     4 +-
 META                             |     2 +-
 aclocal.m4                       |  1025 --
 cmd/splslab/splslab.py           |   202 +
 config/config.guess              |  1501 ---
 config/config.sub                |  1705 ---
 config/depcomp                   |   630 --
 config/install-sh                |   520 -
 config/libtool.m4                |  7360 -------------
 config/ltmain.sh                 |  8406 ---------------
 config/ltoptions.m4              |   368 -
 config/ltsugar.m4                |   123 -
 config/ltversion.m4              |    23 -
 config/lt~obsolete.m4            |    92 -
 config/missing                   |   376 -
 config/spl-build.m4              |   145 +-
 config/spl-meta.m4               |     8 +
 man/man5/spl-module-parameters.5 |    43 +
 scripts/check.sh                 |     2 +-
 104 files changed, 2084 insertions(+), 56350 deletions(-)
 delete mode 100755 configure
 delete mode 100644 Makefile.in
 delete mode 100644 cmd/Makefile.in
 create mode 100644 cmd/splat/Makefile.am
 create mode 100644 cmd/splslab/Makefile.am
 delete mode 100644 include/Makefile.in
 delete mode 100644 include/fs/Makefile.in
 delete mode 100644 include/linux/Makefile.in
 delete mode 100644 include/rpc/Makefile.in
 delete mode 100644 include/sharefs/Makefile.in
 delete mode 100644 include/sys/Makefile.in
 delete mode 100644 include/sys/fm/Makefile.in
 delete mode 100644 include/sys/fs/Makefile.in
 delete mode 100644 include/sys/sysevent/Makefile.in
 delete mode 100644 include/util/Makefile.in
 delete mode 100644 include/vm/Makefile.in
 delete mode 100644 lib/Makefile.in
 delete mode 100644 man/Makefile.in
 delete mode 100644 man/man1/Makefile.in
 delete mode 100644 man/man5/Makefile.in
 delete mode 100644 rpm/Makefile.in
 delete mode 100644 rpm/generic/Makefile.in
 delete mode 100644 rpm/redhat/Makefile.in
 delete mode 100644 scripts/Makefile.in
 rename cmd/{ => splat}/splat.h (100%)
 create mode 100644 include/sys/dkioc_free_util.h
 mode change 100644 => 120000 rpm/redhat/spl-dkms.spec.in
 mode change 100644 => 120000 rpm/redhat/spl.spec.in
 delete mode 100644 spl_config.h.in
 rename cmd/{ => splat}/splat.c (100%)
 delete mode 100644 aclocal.m4
 create mode 100755 cmd/splslab/splslab.py
 delete mode 100755 config/config.guess
 delete mode 100755 config/config.sub
 delete mode 100755 config/depcomp
 delete mode 100755 config/install-sh
 delete mode 100644 config/libtool.m4
 delete mode 100755 config/ltmain.sh
 delete mode 100644 config/ltoptions.m4
 delete mode 100644 config/ltsugar.m4
 delete mode 100644 config/ltversion.m4
 delete mode 100644 config/lt~obsolete.m4
 delete mode 100755 config/missing

More information about the Pkg-zfsonlinux-devel mailing list