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 /configure | |
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 'configure')
-rwxr-xr-x | configure | 82 |
1 files changed, 82 insertions, 0 deletions
@@ -15334,6 +15334,47 @@ _ACEOF fi + + { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes is exported" >&5 +$as_echo_n "checking whether symbol invalidate_inodes is exported... " >&6; } + grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + + else + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INVALIDATE_INODES 1 +_ACEOF + + fi + else + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INVALIDATE_INODES 1 +_ACEOF + + fi + + ;; user) @@ -19029,6 +19070,47 @@ _ACEOF + { $as_echo "$as_me:$LINENO: checking whether symbol invalidate_inodes is exported" >&5 +$as_echo_n "checking whether symbol invalidate_inodes is exported... " >&6; } + grep -q -E '[[:space:]]invalidate_inodes[[:space:]]' \ + $LINUX_OBJ/Module*.symvers 2>/dev/null + rc=$? + if test $rc -ne 0; then + export=0 + for file in ; do + grep -q -E "EXPORT_SYMBOL.*(invalidate_inodes)" \ + "$LINUX_OBJ/$file" 2>/dev/null + rc=$? + if test $rc -eq 0; then + export=1 + break; + fi + done + if test $export -eq 0; then + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + + else + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INVALIDATE_INODES 1 +_ACEOF + + fi + else + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +cat >>confdefs.h <<\_ACEOF +#define HAVE_INVALIDATE_INODES 1 +_ACEOF + + fi + + + if test "x$AWK" != xgawk; then |