diff options
author | Brian Behlendorf <[email protected]> | 2011-02-23 12:25:45 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2011-02-23 12:44:32 -0800 |
commit | 914b063133365a17b1f607cbe96102259e497753 (patch) | |
tree | f90c6739c85e1c71638aa7e43efc6123eb7d4aec /config | |
parent | bf665d4075e9777af089e669c65f72d5d652f26e (diff) |
Linux compat 2.6.37, invalidate_inodes()
In the 2.6.37 kernel the function invalidate_inodes() is no longer
exported for use by modules. This memory management functionality
is needed to invalidate the inodes attached to a super block without
unmounting the filesystem.
Because this function still exists in the kernel and the prototype
is available is a common header all we strictly need is the symbol
address. The address is obtained using spl_kallsyms_lookup_name()
and assigned to the variable invalidate_inodes_fn. Then a #define
is used to replace all instances of invalidate_inodes() with a
call to the acquired address. All the complexity is hidden behind
HAVE_INVALIDATE_INODES and invalidate_inodes() can be used as usual.
Long term we should try to get this, or another, interface made
available to modules again.
Diffstat (limited to 'config')
-rw-r--r-- | config/spl-build.m4 | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/config/spl-build.m4 b/config/spl-build.m4 index d8eadb7e9..2356f209f 100644 --- a/config/spl-build.m4 +++ b/config/spl-build.m4 @@ -74,6 +74,7 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ SPL_AC_KVASPRINTF SPL_AC_3ARGS_FILE_FSYNC SPL_AC_EXPORTED_RWSEM_IS_LOCKED + SPL_AC_KERNEL_INVALIDATE_INODES ]) AC_DEFUN([SPL_AC_MODULE_SYMVERS], [ @@ -1685,3 +1686,18 @@ AC_DEFUN([SPL_AC_EXPORTED_RWSEM_IS_LOCKED], [ [rwsem_is_locked() acquires sem->wait_lock])], []) ]) + +dnl # +dnl # 2.6.37 API compat, +dnl # The function invalidate_inodes() is no longer exported by the kernel. +dnl # The prototype however is still available which means it is safe +dnl # to acquire the symbol's address using spl_kallsyms_lookup_name(). +dnl # +AC_DEFUN([SPL_AC_KERNEL_INVALIDATE_INODES], [ + SPL_CHECK_SYMBOL_EXPORT( + [invalidate_inodes], + [], + [AC_DEFINE(HAVE_INVALIDATE_INODES, 1, + [invalidate_inodes() is available])], + []) +]) |