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 /include | |
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 'include')
-rw-r--r-- | include/linux/mm_compat.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/linux/mm_compat.h b/include/linux/mm_compat.h index 57f83dcc9..5c5198b90 100644 --- a/include/linux/mm_compat.h +++ b/include/linux/mm_compat.h @@ -26,6 +26,7 @@ #define _SPL_MM_COMPAT_H #include <linux/mm.h> +#include <linux/fs.h> /* * Linux 2.6.31 API Change. @@ -43,4 +44,16 @@ #define high_wmark_pages(z) (z->pages_high) #endif +/* + * 2.6.37 API compat, + * The function invalidate_inodes() is no longer exported by the kernel. + * The prototype however is still available which means it is safe + * to acquire the symbol's address using spl_kallsyms_lookup_name(). + */ +#ifndef HAVE_INVALIDATE_INODES +typedef int (*invalidate_inodes_t)(struct super_block *sb); +extern invalidate_inodes_t invalidate_inodes_fn; +#define invalidate_inodes(sb) invalidate_inodes_fn(sb) +#endif /* HAVE_INVALIDATE_INODES */ + #endif /* SPL_MM_COMPAT_H */ |