[#include <linux/pagevec.h>],
[__pagevec_lru_add_file(NULL);])
AC_CHECK_LINUX_FUNC([path_lookup],
- [#include <linux/namei.h>],
+ [#include <linux/fs.h>
+ #include <linux/namei.h>],
[path_lookup(NULL, 0, NULL);])
AC_CHECK_LINUX_FUNC([rcu_read_lock],
[#include <linux/rcupdate.h>],
return code;
}
-static inline int
-afs_kern_path(char *aname, int flags, struct nameidata *nd, struct path *path) {
#if defined(HAVE_LINUX_PATH_LOOKUP)
+static inline int
+afs_kern_path(char *aname, int flags, struct nameidata *nd) {
return path_lookup(aname, flags, nd);
+}
#else
+static inline int
+afs_kern_path(char *aname, int flags, struct path *path) {
return kern_path(aname, flags, path);
-#endif
}
+#endif
static inline void
-afs_get_dentry_ref(struct nameidata *nd, struct path *path, struct vfsmount **mnt, struct dentry **dpp) {
+#if defined(HAVE_LINUX_PATH_LOOKUP)
+afs_get_dentry_ref(struct nameidata *nd, struct vfsmount **mnt, struct dentry **dpp) {
+#else
+afs_get_dentry_ref(struct path *path, struct vfsmount **mnt, struct dentry **dpp) {
+#endif
#if defined(STRUCT_NAMEIDATA_HAS_PATH)
# if defined(HAVE_LINUX_PATH_LOOKUP)
*dpp = dget(nd->path.dentry);
struct dentry **dpp)
{
int code;
- struct nameidata nd;
- struct path path;
+#if defined(HAVE_LINUX_PATH_LOOKUP)
+ struct nameidata path_data;
+#else
+ struct path path_data;
+#endif
int flags = LOOKUP_POSITIVE;
code = ENOENT;
if (followlink)
flags |= LOOKUP_FOLLOW;
- code = afs_kern_path(aname, flags, &nd, &path);
+ code = afs_kern_path(aname, flags, &path_data);
if (!code)
- afs_get_dentry_ref(&nd, &path, mnt, dpp);
+ afs_get_dentry_ref(&path_data, mnt, dpp);
return code;
}