A generic_file_llseek_size starting kernel 3.5 has 5 arguments.
We need to detect and use with the correct number of arguments.
Signed-off-by: Minh Diep <minh.diep@intel.com>
Change-Id: I966de37a880a94cde54be84062dec2b91e8334f5
Reviewed-on: http://review.whamcloud.com/5244
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Yang Sheng <yang.sheng@intel.com>
Reviewed-by: Peng Tao <bergwolf@gmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
EXTRA_KCFLAGS="$tmp_flags"
])
+# 3.5 has generic_file_llseek_size with 5 args
+AC_DEFUN([LC_FILE_LLSEEK_SIZE_5ARG],
+[AC_MSG_CHECKING([if kernel has generic_file_llseek_size with 5 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/fs.h>
+],[
+ generic_file_llseek_size(NULL, 0, 0, 0, 0);
+], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_FILE_LLSEEK_SIZE_5ARGS, 1,
+ [kernel has generic_file_llseek_size with 5 args])
+],[
+ AC_MSG_RESULT([no])
+])
+])
+
#
# 3.6 switch i_dentry/d_alias from list to hlist
#
#endif
+#if !defined(HAVE_FILE_LLSEEK_SIZE) || defined(HAVE_FILE_LLSEEK_5ARGS)
+#define ll_generic_file_llseek_size(file, offset, origin, maxbytes, eof) \
+ generic_file_llseek_size(file, offset, origin, maxbytes, eof);
+#else
+#define ll_generic_file_llseek_size(file, offset, origin, maxbytes, eof) \
+ generic_file_llseek_size(file, offset, origin, maxbytes);
+#endif
+
#ifdef HAVE_INODE_DIO_WAIT
/* inode_dio_wait(i) use as-is for write lock */
# define inode_dio_write_done(i) do {} while (0) /* for write unlock */
eof = i_size_read(inode);
}
- retval = generic_file_llseek_size(file, offset, origin,
+ retval = ll_generic_file_llseek_size(file, offset, origin,
ll_file_maxbytes(inode), eof);
RETURN(retval);
}