New upstream version 0.7.11

This commit is contained in:
Mo Zhou 2018-09-18 01:41:34 +00:00
parent 5fb4ba9503
commit b97c779121
42 changed files with 285 additions and 62 deletions

2
META
View File

@ -1,7 +1,7 @@
Meta: 1 Meta: 1
Name: spl Name: spl
Branch: 1.0 Branch: 1.0
Version: 0.7.9 Version: 0.7.11
Release: 1 Release: 1
Release-Tags: relext Release-Tags: relext
License: GPL License: GPL

View File

@ -89,6 +89,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

1
aclocal.m4 vendored
View File

@ -1020,6 +1020,7 @@ m4_include([config/kernel-ctl-table-name.m4])
m4_include([config/kernel-fallocate.m4]) m4_include([config/kernel-fallocate.m4])
m4_include([config/kernel-group-info.m4]) m4_include([config/kernel-group-info.m4])
m4_include([config/kernel-inode-lock.m4]) m4_include([config/kernel-inode-lock.m4])
m4_include([config/kernel-inode-times.m4])
m4_include([config/kernel-kmem-cache.m4]) m4_include([config/kernel-kmem-cache.m4])
m4_include([config/kernel-kuidgid.m4]) m4_include([config/kernel-kuidgid.m4])
m4_include([config/kernel-pde-data.m4]) m4_include([config/kernel-pde-data.m4])

View File

@ -41,6 +41,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -52,6 +52,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -42,6 +42,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -0,0 +1,25 @@
dnl #
dnl # 4.18 API change
dnl # i_atime, i_mtime, and i_ctime changed from timespec to timespec64.
dnl #
AC_DEFUN([SPL_AC_KERNEL_INODE_TIMES], [
AC_MSG_CHECKING([whether inode->i_*time's are timespec64])
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
SPL_LINUX_TRY_COMPILE([
#include <linux/fs.h>
],[
struct inode ip;
struct timespec ts;
memset(&ip, 0, sizeof(ip));
ts = ip.i_mtime;
],[
AC_MSG_RESULT(no)
],[
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_INODE_TIMESPEC64_TIMES, 1,
[inode->i_*time's are timespec64])
])
EXTRA_KCFLAGS="$tmp_flags"
])

View File

@ -43,6 +43,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [
SPL_AC_2ARGS_VFS_GETATTR SPL_AC_2ARGS_VFS_GETATTR
SPL_AC_USLEEP_RANGE SPL_AC_USLEEP_RANGE
SPL_AC_KMEM_CACHE_ALLOCFLAGS SPL_AC_KMEM_CACHE_ALLOCFLAGS
SPL_AC_KERNEL_INODE_TIMES
SPL_AC_WAIT_ON_BIT SPL_AC_WAIT_ON_BIT
SPL_AC_INODE_LOCK SPL_AC_INODE_LOCK
SPL_AC_GROUP_INFO_GID SPL_AC_GROUP_INFO_GID

168
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.63 for spl 0.7.9. # Generated by GNU Autoconf 2.63 for spl 0.7.11.
# #
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
@ -743,8 +743,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='spl' PACKAGE_NAME='spl'
PACKAGE_TARNAME='spl' PACKAGE_TARNAME='spl'
PACKAGE_VERSION='0.7.9' PACKAGE_VERSION='0.7.11'
PACKAGE_STRING='spl 0.7.9' PACKAGE_STRING='spl 0.7.11'
PACKAGE_BUGREPORT='' PACKAGE_BUGREPORT=''
# Factoring default headers for most tests. # Factoring default headers for most tests.
@ -1535,7 +1535,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures spl 0.7.9 to adapt to many kinds of systems. \`configure' configures spl 0.7.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1606,7 +1606,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of spl 0.7.9:";; short | recursive ) echo "Configuration of spl 0.7.11:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1720,7 +1720,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
spl configure 0.7.9 spl configure 0.7.11
generated by GNU Autoconf 2.63 generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@ -1734,7 +1734,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by spl $as_me 0.7.9, which was It was created by spl $as_me 0.7.11, which was
generated by GNU Autoconf 2.63. Invocation command line was generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@ $ $0 $@
@ -2888,7 +2888,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='spl' PACKAGE='spl'
VERSION='0.7.9' VERSION='0.7.11'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -14402,6 +14402,80 @@ 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; }
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
cat confdefs.h - <<_ACEOF >conftest.c
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <linux/fs.h>
int
main (void)
{
struct inode ip;
struct timespec ts;
memset(&ip, 0, sizeof(ip));
ts = ip.i_mtime;
;
return 0;
}
_ACEOF
rm -Rf build && mkdir -p build && touch build/conftest.mod.c
echo "obj-m := conftest.o" >build/Makefile
modpost_flag=''
test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
{ (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); }; } >/dev/null && { ac_try='test -s build/conftest.o'
{ (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: no" >&5
$as_echo "no" >&6; }
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ $as_echo "$as_me:$LINENO: result: yes" >&5
$as_echo "yes" >&6; }
cat >>confdefs.h <<\_ACEOF
#define HAVE_INODE_TIMESPEC64_TIMES 1
_ACEOF
fi
rm -Rf build
EXTRA_KCFLAGS="$tmp_flags"
{ $as_echo "$as_me:$LINENO: checking whether wait_on_bit() takes an action" >&5 { $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; } $as_echo_n "checking whether wait_on_bit() takes an action... " >&6; }
@ -17878,6 +17952,80 @@ 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; }
tmp_flags="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="-Werror"
cat confdefs.h - <<_ACEOF >conftest.c
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <linux/fs.h>
int
main (void)
{
struct inode ip;
struct timespec ts;
memset(&ip, 0, sizeof(ip));
ts = ip.i_mtime;
;
return 0;
}
_ACEOF
rm -Rf build && mkdir -p build && touch build/conftest.mod.c
echo "obj-m := conftest.o" >build/Makefile
modpost_flag=''
test "x$enable_linux_builtin" = xyes && modpost_flag='modpost=true' # fake modpost stage
if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build $modpost_flag'
{ (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); }; } >/dev/null && { ac_try='test -s build/conftest.o'
{ (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: no" >&5
$as_echo "no" >&6; }
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
{ $as_echo "$as_me:$LINENO: result: yes" >&5
$as_echo "yes" >&6; }
cat >>confdefs.h <<\_ACEOF
#define HAVE_INODE_TIMESPEC64_TIMES 1
_ACEOF
fi
rm -Rf build
EXTRA_KCFLAGS="$tmp_flags"
{ $as_echo "$as_me:$LINENO: checking whether wait_on_bit() takes an action" >&5 { $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; } $as_echo_n "checking whether wait_on_bit() takes an action... " >&6; }
@ -19246,7 +19394,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by spl $as_me 0.7.9, which was This file was extended by spl $as_me 0.7.11, which was
generated by GNU Autoconf 2.63. Invocation command line was generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -19309,7 +19457,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\ ac_cs_version="\\
spl config.status 0.7.9 spl config.status 0.7.11
configured by $0, generated by GNU Autoconf 2.63, configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -88,32 +88,7 @@ EOF
done done
} > "$KERNEL_DIR/spl/Kbuild" } > "$KERNEL_DIR/spl/Kbuild"
add_after() echo 'source "spl/Kconfig"' >>"$KERNEL_DIR/Kconfig"
{
local FILE="$1"
local MARKER="$2"
local NEW="$3"
local LINE
while IFS='' read -r LINE
do
echo "$LINE"
if [ -n "$MARKER" -a "$LINE" = "$MARKER" ]
then
echo "$NEW"
MARKER=''
if IFS='' read -r LINE
then
[ "$LINE" != "$NEW" ] && echo "$LINE"
fi
fi
done < "$FILE" > "$FILE.new"
mv "$FILE.new" "$FILE"
}
add_after "$KERNEL_DIR/Kconfig" 'source "arch/$SRCARCH/Kconfig"' 'source "spl/Kconfig"'
# We must take care to build SPL before ZFS, otherwise the symbols required # We must take care to build SPL before ZFS, otherwise the symbols required
# to link ZFS will not be available. # to link ZFS will not be available.
sed -i 's~mm/ fs/~mm/ spl/ fs/~' "$KERNEL_DIR/Makefile" sed -i 's~mm/ fs/~mm/ spl/ fs/~' "$KERNEL_DIR/Makefile"

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -31,6 +31,7 @@
#include <sys/kmem.h> #include <sys/kmem.h>
#include <sys/mutex.h> #include <sys/mutex.h>
#include <sys/callo.h> #include <sys/callo.h>
#include <sys/time.h>
/* /*
* The kcondvar_t struct is protected by mutex taken externally before * The kcondvar_t struct is protected by mutex taken externally before

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -210,6 +210,14 @@
#include <sys/byteorder.h> #include <sys/byteorder.h>
/*
* 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) #if defined(__LITTLE_ENDIAN) && !defined(_LITTLE_ENDIAN)
#define _LITTLE_ENDIAN __LITTLE_ENDIAN #define _LITTLE_ENDIAN __LITTLE_ENDIAN
#endif #endif

View File

@ -72,7 +72,7 @@
#define KSTAT_FLAG_UNSUPPORTED \ #define KSTAT_FLAG_UNSUPPORTED \
(KSTAT_FLAG_VAR_SIZE | KSTAT_FLAG_WRITABLE | \ (KSTAT_FLAG_VAR_SIZE | KSTAT_FLAG_WRITABLE | \
KSTAT_FLAG_PERSISTENT | KSTAT_FLAG_DORMANT) KSTAT_FLAG_PERSISTENT | KSTAT_FLAG_DORMANT)
#define KSTAT_FLAG_NO_HEADERS 0x80
#define KS_MAGIC 0x9d9d9d9d #define KS_MAGIC 0x9d9d9d9d

View File

@ -151,10 +151,10 @@ RW_LOCK_HELD(krwlock_t *rwp)
spl_rw_set_type(rwp, type); \ spl_rw_set_type(rwp, type); \
}) })
#define rw_destroy(rwp) \ /*
({ \ * The Linux rwsem implementation does not require a matching destroy.
VERIFY(!RW_LOCK_HELD(rwp)); \ */
}) #define rw_destroy(rwp) ((void) 0)
#define rw_tryenter(rwp, rw) \ #define rw_tryenter(rwp, rw) \
({ \ ({ \

View File

@ -52,15 +52,28 @@
#define NSEC2SEC(n) ((n) / (NANOSEC / SEC)) #define NSEC2SEC(n) ((n) / (NANOSEC / SEC))
#define SEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / SEC)) #define SEC2NSEC(m) ((hrtime_t)(m) * (NANOSEC / SEC))
typedef longlong_t hrtime_t;
typedef struct timespec timespec_t;
static const int hz = HZ; static const int hz = HZ;
#define TIMESPEC_OVERFLOW(ts) \ #define TIMESPEC_OVERFLOW(ts) \
((ts)->tv_sec < TIME_MIN || (ts)->tv_sec > TIME_MAX) ((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
static inline void static inline void
gethrestime(timestruc_t *now) gethrestime(inode_timespec_t *ts)
{ {
*now = current_kernel_time(); #if defined(HAVE_INODE_TIMESPEC64_TIMES)
*ts = current_kernel_time64();
#else
*ts = current_kernel_time();
#endif
} }
static inline time_t static inline time_t
@ -74,9 +87,9 @@ gethrestime_sec(void)
static inline hrtime_t static inline hrtime_t
gethrtime(void) gethrtime(void)
{ {
struct timespec now; struct timespec ts;
getrawmonotonic(&now); getrawmonotonic(&ts);
return (((hrtime_t)now.tv_sec * NSEC_PER_SEC) + now.tv_nsec); return (((hrtime_t)ts.tv_sec * NSEC_PER_SEC) + ts.tv_nsec);
} }
#endif /* _SPL_TIME_H */ #endif /* _SPL_TIME_H */

View File

@ -49,9 +49,6 @@ typedef long long offset_t;
typedef struct task_struct kthread_t; typedef struct task_struct kthread_t;
typedef struct task_struct proc_t; typedef struct task_struct proc_t;
typedef short pri_t; typedef short pri_t;
typedef struct timespec timestruc_t; /* definition per SVr4 */
typedef struct timespec timespec_t;
typedef longlong_t hrtime_t;
typedef unsigned short ushort_t; typedef unsigned short ushort_t;
typedef u_longlong_t len_t; typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t; typedef longlong_t diskaddr_t;

View File

@ -129,9 +129,9 @@ typedef struct vattr {
long va_nodeid; /* node # */ long va_nodeid; /* node # */
uint32_t va_nlink; /* # links */ uint32_t va_nlink; /* # links */
uint64_t va_size; /* file size */ uint64_t va_size; /* file size */
struct timespec va_atime; /* last acc */ inode_timespec_t va_atime; /* last acc */
struct timespec va_mtime; /* last mod */ inode_timespec_t va_mtime; /* last mod */
struct timespec va_ctime; /* last chg */ inode_timespec_t va_ctime; /* last chg */
dev_t va_rdev; /* dev */ dev_t va_rdev; /* dev */
uint64_t va_nblocks; /* space used */ uint64_t va_nblocks; /* space used */
uint32_t va_blksize; /* block size */ uint32_t va_blksize; /* block size */

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -51,6 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -41,6 +41,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -42,6 +42,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -42,6 +42,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -388,7 +388,8 @@ kstat_seq_start(struct seq_file *f, loff_t *pos)
ksp->ks_snaptime = gethrtime(); ksp->ks_snaptime = gethrtime();
if (!n && kstat_seq_show_headers(f)) if (!(ksp->ks_flags & KSTAT_FLAG_NO_HEADERS) && !n &&
kstat_seq_show_headers(f))
return (NULL); return (NULL);
if (n >= ksp->ks_ndata) if (n >= ksp->ks_ndata)
@ -538,7 +539,6 @@ __kstat_create(const char *ks_module, int ks_instance, const char *ks_name,
ASSERT(ks_module); ASSERT(ks_module);
ASSERT(ks_instance == 0); ASSERT(ks_instance == 0);
ASSERT(ks_name); ASSERT(ks_name);
ASSERT(!(ks_flags & KSTAT_FLAG_UNSUPPORTED));
if ((ks_type == KSTAT_TYPE_INTR) || (ks_type == KSTAT_TYPE_IO)) if ((ks_type == KSTAT_TYPE_INTR) || (ks_type == KSTAT_TYPE_IO))
ASSERT(ks_ndata == 1); ASSERT(ks_ndata == 1);

View File

@ -34,16 +34,24 @@
static int static int
__rwsem_tryupgrade(struct rw_semaphore *rwsem) __rwsem_tryupgrade(struct rw_semaphore *rwsem)
{ {
#if defined(READER_BIAS) && defined(WRITER_BIAS)
/*
* After the 4.9.20-rt16 kernel the realtime patch series lifted the
* single reader restriction. While this could be accommodated by
* adding additional compatibility code assume the rwsem can never
* be upgraded. All caller must already cleanly handle this case.
*/
return (0);
#else
ASSERT((struct task_struct *) ASSERT((struct task_struct *)
((unsigned long)rwsem->lock.owner & ~RT_MUTEX_OWNER_MASKALL) == ((unsigned long)rwsem->lock.owner & ~RT_MUTEX_OWNER_MASKALL) ==
current); current);
/* /*
* Under the realtime patch series, rwsem is implemented as a * Prior to 4.9.20-rt16 kernel the realtime patch series, rwsem is
* single mutex held by readers and writers alike. However, * implemented as a single mutex held by readers and writers alike.
* this implementation would prevent a thread from taking a * However, this implementation would prevent a thread from taking
* read lock twice, as the mutex would already be locked on * a read lock twice, as the mutex would already be locked on
* the second attempt. Therefore the implementation allows a * the second attempt. Therefore the implementation allows a
* single thread to take a rwsem as read lock multiple times * single thread to take a rwsem as read lock multiple times
* tracking that nesting as read_depth counter. * tracking that nesting as read_depth counter.
@ -59,6 +67,7 @@ __rwsem_tryupgrade(struct rw_semaphore *rwsem)
return (1); return (1);
} }
return (0); return (0);
#endif
} }
#elif defined(CONFIG_RWSEM_GENERIC_SPINLOCK) #elif defined(CONFIG_RWSEM_GENERIC_SPINLOCK)
static int static int

View File

@ -670,6 +670,8 @@ vn_file_cache_destructor(void *buf, void *cdrarg)
int int
spl_vn_init(void) spl_vn_init(void)
{ {
spin_lock_init(&vn_file_lock);
vn_cache = kmem_cache_create("spl_vn_cache", vn_cache = kmem_cache_create("spl_vn_cache",
sizeof (struct vnode), 64, vn_cache_constructor, sizeof (struct vnode), 64, vn_cache_constructor,
vn_cache_destructor, NULL, NULL, NULL, 0); vn_cache_destructor, NULL, NULL, NULL, 0);

View File

@ -41,6 +41,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -167,6 +167,12 @@ chmod u+x ${RPM_BUILD_ROOT}%{kmodinstdir_prefix}/*/extra/*/*/*
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
%changelog %changelog
* Thu Sep 13 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.11-1
- Released 0.7.11-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.11
* Wed Sep 05 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.10-1
- Released 0.7.10-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.10
* Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1 * Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1
- Released 0.7.9-1, detailed release notes are available at: - Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9

View File

@ -44,6 +44,12 @@ make install DESTDIR=%{?buildroot}
%{_mandir}/man5/* %{_mandir}/man5/*
%changelog %changelog
* Thu Sep 13 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.11-1
- Released 0.7.11-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.11
* Wed Sep 05 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.10-1
- Released 0.7.10-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.10
* Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1 * Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1
- Released 0.7.9-1, detailed release notes are available at: - Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9

View File

@ -43,6 +43,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -44,6 +44,12 @@ make install DESTDIR=%{?buildroot}
%{_mandir}/man5/* %{_mandir}/man5/*
%changelog %changelog
* Thu Sep 13 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.11-1
- Released 0.7.11-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.11
* Wed Sep 05 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.10-1
- Released 0.7.10-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.10
* Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1 * Tue May 08 2018 Tony Hutter <hutter2@llnl.gov> - 0.7.9-1
- Released 0.7.9-1, detailed release notes are available at: - Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9 - https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9

View File

@ -41,6 +41,7 @@ am__aclocal_m4_deps = $(top_srcdir)/config/kernel-ctl-table-name.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \ $(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.m4 \ $(top_srcdir)/config/kernel-group-info.m4 \
$(top_srcdir)/config/kernel-inode-lock.m4 \ $(top_srcdir)/config/kernel-inode-lock.m4 \
$(top_srcdir)/config/kernel-inode-times.m4 \
$(top_srcdir)/config/kernel-kmem-cache.m4 \ $(top_srcdir)/config/kernel-kmem-cache.m4 \
$(top_srcdir)/config/kernel-kuidgid.m4 \ $(top_srcdir)/config/kernel-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \ $(top_srcdir)/config/kernel-pde-data.m4 \

View File

@ -57,6 +57,9 @@
/* yes */ /* yes */
#undef HAVE_INODE_LOCK_SHARED #undef HAVE_INODE_LOCK_SHARED
/* inode->i_*time's are timespec64 */
#undef HAVE_INODE_TIMESPEC64_TIMES
/* truncate_range() inode operation is available */ /* truncate_range() inode operation is available */
#undef HAVE_INODE_TRUNCATE_RANGE #undef HAVE_INODE_TRUNCATE_RANGE