Linux 2.6.39 compat, invalidate_inodes()

To resolve a potiential filesystem corruption issue a second
argument was added to invalidate_inodes().  This argument controls
whether dirty inodes are dropped or treated as busy when invalidating
a super block.  When only the legacy API is available the second
argument will be dropped for compatibility.
This commit is contained in:
Brian Behlendorf
2011-04-18 13:47:43 -07:00
parent 96cdefab84
commit 9b0f9079d2
5 changed files with 181 additions and 3 deletions
+18 -2
View File
@@ -49,11 +49,27 @@
* 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().
*
* 2.6.39 API compat,
* As for 2.6.39 invalidate_inodes() was updated to take a second
* argument which controls how dirty inodes should be handled.
*/
#ifndef HAVE_INVALIDATE_INODES
#ifdef HAVE_INVALIDATE_INODES
# ifdef HAVE_2ARGS_INVALIDATE_INODES
# define spl_invalidate_inodes(sb, kd) invalidate_inodes(sb, kd)
# else
# define spl_invalidate_inodes(sb, kd) invalidate_inodes(sb)
# endif /* HAVE_2ARGS_INVALIDATE_INODES */
#else
# ifdef HAVE_2ARGS_INVALIDATE_INODES
typedef int (*invalidate_inodes_t)(struct super_block *sb, bool kd);
extern invalidate_inodes_t invalidate_inodes_fn;
# define spl_invalidate_inodes(sb, kd) invalidate_inodes_fn(sb, kd)
# else
typedef int (*invalidate_inodes_t)(struct super_block *sb);
extern invalidate_inodes_t invalidate_inodes_fn;
#define invalidate_inodes(sb) invalidate_inodes_fn(sb)
# define spl_invalidate_inodes(sb, kd) invalidate_inodes_fn(sb)
# endif /* HAVE_2ARGS_INVALIDATE_INODES */
#endif /* HAVE_INVALIDATE_INODES */
/*