mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
Linux 2.6.36 compat, sops->evict_inode()
The new prefered inteface for evicting an inode from the inode cache is the ->evict_inode() callback. It replaces both the ->delete_inode() and ->clear_inode() callbacks which were previously used for this.
This commit is contained in:
parent
f9637c6c8b
commit
2c395def27
@ -65,6 +65,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -50,6 +50,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -53,6 +53,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
21
config/kernel-evict-inode.m4
Normal file
21
config/kernel-evict-inode.m4
Normal file
@ -0,0 +1,21 @@
|
||||
dnl #
|
||||
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_EVICT_INODE], [
|
||||
AC_MSG_CHECKING([whether sops->evict_inode() exists])
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
void (*evict_inode) (struct inode *) = NULL;
|
||||
struct super_operations sops;
|
||||
|
||||
sops.evict_inode = evict_inode;
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_EVICT_INODE, 1, [sops->evict_inode() exists])
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
])
|
||||
])
|
@ -32,6 +32,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
|
||||
ZFS_AC_KERNEL_XATTR_HANDLER_GET
|
||||
ZFS_AC_KERNEL_XATTR_HANDLER_SET
|
||||
ZFS_AC_KERNEL_FSYNC_2ARGS
|
||||
ZFS_AC_KERNEL_EVICT_INODE
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
|
136
configure
vendored
136
configure
vendored
@ -14107,6 +14107,74 @@ fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5
|
||||
$as_echo_n "checking whether sops->evict_inode() exists... " >&6; }
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
void (*evict_inode) (struct inode *) = NULL;
|
||||
struct super_operations sops;
|
||||
|
||||
sops.evict_inode = evict_inode;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
|
||||
|
||||
rm -Rf build && mkdir -p build
|
||||
echo "obj-m := conftest.o" >build/Makefile
|
||||
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'
|
||||
{ (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: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_EVICT_INODE 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 build
|
||||
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
@ -17918,6 +17986,74 @@ fi
|
||||
|
||||
|
||||
|
||||
{ $as_echo "$as_me:$LINENO: checking whether sops->evict_inode() exists" >&5
|
||||
$as_echo_n "checking whether sops->evict_inode() exists... " >&6; }
|
||||
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
void (*evict_inode) (struct inode *) = NULL;
|
||||
struct super_operations sops;
|
||||
|
||||
sops.evict_inode = evict_inode;
|
||||
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
|
||||
|
||||
rm -Rf build && mkdir -p build
|
||||
echo "obj-m := conftest.o" >build/Makefile
|
||||
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'
|
||||
{ (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: yes" >&5
|
||||
$as_echo "yes" >&6; }
|
||||
|
||||
cat >>confdefs.h <<\_ACEOF
|
||||
#define HAVE_EVICT_INODE 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 build
|
||||
|
||||
|
||||
|
||||
|
||||
if test "$LINUX_OBJ" != "$LINUX"; then
|
||||
KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
|
||||
fi
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -50,6 +50,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -50,6 +50,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -52,6 +52,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -50,6 +50,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -50,6 +50,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -3632,8 +3632,6 @@ zfs_inactive(struct inode *ip)
|
||||
zfs_sb_t *zsb = ITOZSB(ip);
|
||||
int error;
|
||||
|
||||
truncate_inode_pages(&ip->i_data, 0);
|
||||
|
||||
#ifdef HAVE_SNAPSHOT
|
||||
/* Early return for snapshot inode? */
|
||||
#endif /* HAVE_SNAPSHOT */
|
||||
|
@ -47,22 +47,54 @@ zpl_inode_destroy(struct inode *ip)
|
||||
zfs_inode_destroy(ip);
|
||||
}
|
||||
|
||||
static void
|
||||
zpl_inode_delete(struct inode *ip)
|
||||
{
|
||||
loff_t oldsize = i_size_read(ip);
|
||||
|
||||
i_size_write(ip, 0);
|
||||
truncate_pagecache(ip, oldsize, 0);
|
||||
clear_inode(ip);
|
||||
}
|
||||
|
||||
/*
|
||||
* When ->drop_inode() is called its return value indicates if the
|
||||
* inode should be evicted from the inode cache. If the inode is
|
||||
* unhashed and has no links the default policy is to evict it
|
||||
* immediately.
|
||||
*
|
||||
* Prior to 2.6.36 this eviction was accomplished by the vfs calling
|
||||
* ->delete_inode(). It was ->delete_inode()'s responsibility to
|
||||
* truncate the inode pages and call clear_inode(). The call to
|
||||
* clear_inode() synchronously invalidates all the buffers and
|
||||
* calls ->clear_inode(). It was ->clear_inode()'s responsibility
|
||||
* to cleanup and filesystem specific data before freeing the inode.
|
||||
*
|
||||
* This elaborate mechanism was replaced by ->evict_inode() which
|
||||
* does the job of both ->delete_inode() and ->clear_inode(). It
|
||||
* will be called exactly once, and when it returns the inode must
|
||||
* be in a state where it can simply be freed. The ->evict_inode()
|
||||
* callback must minimally truncate the inode pages, and call
|
||||
* end_writeback() to complete all outstanding writeback for the
|
||||
* inode. After this is complete evict inode can cleanup any
|
||||
* remaining filesystem specific data.
|
||||
*/
|
||||
#ifdef HAVE_EVICT_INODE
|
||||
static void
|
||||
zpl_evict_inode(struct inode *ip)
|
||||
{
|
||||
truncate_inode_pages(&ip->i_data, 0);
|
||||
end_writeback(ip);
|
||||
zfs_inactive(ip);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void
|
||||
zpl_clear_inode(struct inode *ip)
|
||||
{
|
||||
zfs_inactive(ip);
|
||||
}
|
||||
|
||||
static void
|
||||
zpl_inode_delete(struct inode *ip)
|
||||
{
|
||||
truncate_inode_pages(&ip->i_data, 0);
|
||||
clear_inode(ip);
|
||||
}
|
||||
|
||||
#endif /* HAVE_EVICT_INODE */
|
||||
|
||||
static void
|
||||
zpl_put_super(struct super_block *sb)
|
||||
{
|
||||
@ -136,11 +168,15 @@ zpl_kill_sb(struct super_block *sb)
|
||||
const struct super_operations zpl_super_operations = {
|
||||
.alloc_inode = zpl_inode_alloc,
|
||||
.destroy_inode = zpl_inode_destroy,
|
||||
.delete_inode = zpl_inode_delete,
|
||||
.dirty_inode = NULL,
|
||||
.write_inode = NULL,
|
||||
.drop_inode = NULL,
|
||||
.clear_inode = zpl_evict_inode,
|
||||
#ifdef HAVE_EVICT_INODE
|
||||
.evict_inode = zpl_evict_inode,
|
||||
#else
|
||||
.clear_inode = zpl_clear_inode,
|
||||
.delete_inode = zpl_inode_delete,
|
||||
#endif /* HAVE_EVICT_INODE */
|
||||
.put_super = zpl_put_super,
|
||||
.write_super = NULL,
|
||||
.sync_fs = NULL,
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -51,6 +51,7 @@ am__aclocal_m4_deps = \
|
||||
$(top_srcdir)/config/kernel-blk-rq-bytes.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-pos.m4 \
|
||||
$(top_srcdir)/config/kernel-blk-rq-sectors.m4 \
|
||||
$(top_srcdir)/config/kernel-evict-inode.m4 \
|
||||
$(top_srcdir)/config/kernel-fmode-t.m4 \
|
||||
$(top_srcdir)/config/kernel-fsync.m4 \
|
||||
$(top_srcdir)/config/kernel-get-disk-ro.m4 \
|
||||
|
@ -69,6 +69,9 @@
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* sops->evict_inode() exists */
|
||||
#undef HAVE_EVICT_INODE
|
||||
|
||||
/* kernel defines fmode_t */
|
||||
#undef HAVE_FMODE_T
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user