Meta: 1
Name: spl
Branch: 1.0
-Version: 0.7.9
+Version: 0.7.11
Release: 1
Release-Tags: relext
License: GPL
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
m4_include([config/kernel-fallocate.m4])
m4_include([config/kernel-group-info.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-kuidgid.m4])
m4_include([config/kernel-pde-data.m4])
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
--- /dev/null
+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"
+])
SPL_AC_2ARGS_VFS_GETATTR
SPL_AC_USLEEP_RANGE
SPL_AC_KMEM_CACHE_ALLOCFLAGS
+ SPL_AC_KERNEL_INODE_TIMES
SPL_AC_WAIT_ON_BIT
SPL_AC_INODE_LOCK
SPL_AC_GROUP_INFO_GID
#! /bin/sh
# 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,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# Identity of this package.
PACKAGE_NAME='spl'
PACKAGE_TARNAME='spl'
-PACKAGE_VERSION='0.7.9'
-PACKAGE_STRING='spl 0.7.9'
+PACKAGE_VERSION='0.7.11'
+PACKAGE_STRING='spl 0.7.11'
PACKAGE_BUGREPORT=''
# Factoring default headers for most tests.
# 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 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]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of spl 0.7.9:";;
+ short | recursive ) echo "Configuration of spl 0.7.11:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-spl configure 0.7.9
+spl configure 0.7.11
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
This file contains any messages produced by compilers while
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
$ $0 $@
# Define the identity of the package.
PACKAGE='spl'
- VERSION='0.7.9'
+ VERSION='0.7.11'
cat >>confdefs.h <<_ACEOF
+ { $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_n "checking whether wait_on_bit() takes an action... " >&6; }
+ { $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_n "checking whether wait_on_bit() takes an action... " >&6; }
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
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
CONFIG_FILES = $CONFIG_FILES
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
-spl config.status 0.7.9
+spl config.status 0.7.11
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
done
} > "$KERNEL_DIR/spl/Kbuild"
-add_after()
-{
- 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"'
+echo 'source "spl/Kconfig"' >>"$KERNEL_DIR/Kconfig"
# We must take care to build SPL before ZFS, otherwise the symbols required
# to link ZFS will not be available.
sed -i 's~mm/ fs/~mm/ spl/ fs/~' "$KERNEL_DIR/Makefile"
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
#include <sys/kmem.h>
#include <sys/mutex.h>
#include <sys/callo.h>
+#include <sys/time.h>
/*
* The kcondvar_t struct is protected by mutex taken externally before
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
#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)
#define _LITTLE_ENDIAN __LITTLE_ENDIAN
#endif
#define KSTAT_FLAG_UNSUPPORTED \
(KSTAT_FLAG_VAR_SIZE | KSTAT_FLAG_WRITABLE | \
KSTAT_FLAG_PERSISTENT | KSTAT_FLAG_DORMANT)
-
+#define KSTAT_FLAG_NO_HEADERS 0x80
#define KS_MAGIC 0x9d9d9d9d
}
/*
- * The following functions must be a #define and not static inline.
+ * 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
spl_rw_set_type(rwp, type); \
})
-#define rw_destroy(rwp) \
-({ \
- VERIFY(!RW_LOCK_HELD(rwp)); \
-})
+/*
+ * The Linux rwsem implementation does not require a matching destroy.
+ */
+#define rw_destroy(rwp) ((void) 0)
#define rw_tryenter(rwp, rw) \
({ \
#define NSEC2SEC(n) ((n) / (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;
#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
+
static inline void
-gethrestime(timestruc_t *now)
-{
- *now = current_kernel_time();
+gethrestime(inode_timespec_t *ts)
+ {
+#if defined(HAVE_INODE_TIMESPEC64_TIMES)
+ *ts = current_kernel_time64();
+#else
+ *ts = current_kernel_time();
+#endif
}
static inline time_t
static inline hrtime_t
gethrtime(void)
{
- struct timespec now;
- getrawmonotonic(&now);
- return (((hrtime_t)now.tv_sec * NSEC_PER_SEC) + now.tv_nsec);
+ struct timespec ts;
+ getrawmonotonic(&ts);
+ return (((hrtime_t)ts.tv_sec * NSEC_PER_SEC) + ts.tv_nsec);
}
#endif /* _SPL_TIME_H */
typedef struct task_struct kthread_t;
typedef struct task_struct proc_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 u_longlong_t len_t;
typedef longlong_t diskaddr_t;
long va_nodeid; /* node # */
uint32_t va_nlink; /* # links */
uint64_t va_size; /* file size */
- struct timespec va_atime; /* last acc */
- struct timespec va_mtime; /* last mod */
- struct timespec va_ctime; /* last chg */
+ 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 */
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
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);
if (n >= ksp->ks_ndata)
ASSERT(ks_module);
ASSERT(ks_instance == 0);
ASSERT(ks_name);
- ASSERT(!(ks_flags & KSTAT_FLAG_UNSUPPORTED));
if ((ks_type == KSTAT_TYPE_INTR) || (ks_type == KSTAT_TYPE_IO))
ASSERT(ks_ndata == 1);
static int
__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 *)
((unsigned long)rwsem->lock.owner & ~RT_MUTEX_OWNER_MASKALL) ==
current);
/*
- * Under the realtime patch series, rwsem is implemented as a
- * single mutex held by readers and writers alike. However,
- * this implementation would prevent a thread from taking a
- * read lock twice, as the mutex would already be locked on
+ * Prior to 4.9.20-rt16 kernel the realtime patch series, rwsem is
+ * implemented as a single mutex held by readers and writers alike.
+ * However, this implementation would prevent a thread from taking
+ * a read lock twice, as the mutex would already be locked on
* the second attempt. Therefore the implementation allows a
* single thread to take a rwsem as read lock multiple times
* tracking that nesting as read_depth counter.
return (1);
}
return (0);
+#endif
}
#elif defined(CONFIG_RWSEM_GENERIC_SPINLOCK)
static int
int
spl_vn_init(void)
{
+ spin_lock_init(&vn_file_lock);
+
vn_cache = kmem_cache_create("spl_vn_cache",
sizeof (struct vnode), 64, vn_cache_constructor,
vn_cache_destructor, NULL, NULL, NULL, 0);
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
rm -rf $RPM_BUILD_ROOT
%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
- Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9
%{_mandir}/man5/*
%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
- Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
%{_mandir}/man5/*
%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
- Released 0.7.9-1, detailed release notes are available at:
- https://github.com/zfsonlinux/zfs/releases/tag/zfs-0.7.9
$(top_srcdir)/config/kernel-fallocate.m4 \
$(top_srcdir)/config/kernel-group-info.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-kuidgid.m4 \
$(top_srcdir)/config/kernel-pde-data.m4 \
/* yes */
#undef HAVE_INODE_LOCK_SHARED
+/* inode->i_*time's are timespec64 */
+#undef HAVE_INODE_TIMESPEC64_TIMES
+
/* truncate_range() inode operation is available */
#undef HAVE_INODE_TRUNCATE_RANGE