Skip to content

Commit 7c19c30

Browse files
committed
Linux: use filemap_invalidate_lock (add test)
Signed-off-by: Pavel Snajdr <[email protected]>
1 parent 63c5598 commit 7c19c30

File tree

3 files changed

+25
-0
lines changed

3 files changed

+25
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
AC_DEFUN([ZFS_AC_KERNEL_SRC_FILEMAP_INVALIDATE_LOCK], [
2+
ZFS_LINUX_TEST_SRC([filemap_invalidate_lock], [
3+
#include <linux/fs.h>
4+
],[
5+
struct address_space mapping;
6+
filemap_invalidate_lock(&mapping);
7+
])
8+
])
9+
10+
AC_DEFUN([ZFS_AC_KERNEL_FILEMAP_INVALIDATE_LOCK], [
11+
AC_MSG_CHECKING([whether filemap_invalidate_lock() is available])
12+
ZFS_LINUX_TEST_RESULT([filemap_invalidate_lock], [
13+
AC_MSG_RESULT(yes)
14+
AC_DEFINE(HAVE_FILEMAP_INVALIDATE_LOCK, 1,
15+
[filemap_invalidate_lock() exists])
16+
],[
17+
AC_MSG_RESULT(no)
18+
])
19+
])

config/kernel.m4

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
129129
ZFS_AC_KERNEL_SRC_MM_PAGE_SIZE
130130
ZFS_AC_KERNEL_SRC_MM_PAGE_MAPPING
131131
ZFS_AC_KERNEL_SRC_FILE
132+
ZFS_AC_KERNEL_SRC_FILEMAP_INVALIDATE_LOCK
132133
case "$host_cpu" in
133134
powerpc*)
134135
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
@@ -242,6 +243,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
242243
ZFS_AC_KERNEL_MM_PAGE_MAPPING
243244
ZFS_AC_KERNEL_1ARG_ASSIGN_STR
244245
ZFS_AC_KERNEL_FILE
246+
ZFS_AC_KERNEL_FILEMAP_INVALIDATE_LOCK
245247
case "$host_cpu" in
246248
powerpc*)
247249
ZFS_AC_KERNEL_CPU_HAS_FEATURE

module/os/linux/zfs/zfs_znode_os.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,7 +1761,9 @@ zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
17611761
sizeof (mode))) != 0)
17621762
return (error);
17631763

1764+
#ifdef HAVE_FILEMAP_INVALIDATE_LOCK
17641765
filemap_invalidate_lock(ZTOI(zp)->i_mapping);
1766+
#endif
17651767
if (off > zp->z_size) {
17661768
error = zfs_extend(zp, off+len);
17671769
if (error == 0 && log)
@@ -1806,7 +1808,9 @@ zfs_freesp(znode_t *zp, uint64_t off, uint64_t len, int flag, boolean_t log)
18061808
out:
18071809
if (!len)
18081810
truncate_setsize(ZTOI(zp), off);
1811+
#ifdef HAVE_FILEMAP_INVALIDATE_LOCK
18091812
filemap_invalidate_unlock(ZTOI(zp)->i_mapping);
1813+
#endif
18101814
return (error);
18111815
}
18121816

0 commit comments

Comments
 (0)