git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
markers: fix duplicate modpost entry
[pandora-kernel.git]
/
fs
/
dcookies.c
diff --git
a/fs/dcookies.c
b/fs/dcookies.c
index
c1208f5
..
855d4b1
100644
(file)
--- a/
fs/dcookies.c
+++ b/
fs/dcookies.c
@@
-20,9
+20,11
@@
#include <linux/capability.h>
#include <linux/dcache.h>
#include <linux/mm.h>
#include <linux/capability.h>
#include <linux/dcache.h>
#include <linux/mm.h>
+#include <linux/err.h>
#include <linux/errno.h>
#include <linux/dcookies.h>
#include <linux/mutex.h>
#include <linux/errno.h>
#include <linux/dcookies.h>
#include <linux/mutex.h>
+#include <linux/path.h>
#include <asm/uaccess.h>
/* The dcookies are allocated from a kmem_cache and
#include <asm/uaccess.h>
/* The dcookies are allocated from a kmem_cache and
@@
-30,8
+32,7
@@
* code here is particularly performance critical
*/
struct dcookie_struct {
* code here is particularly performance critical
*/
struct dcookie_struct {
- struct dentry * dentry;
- struct vfsmount * vfsmnt;
+ struct path path;
struct list_head hash_list;
};
struct list_head hash_list;
};
@@
-50,7
+51,7
@@
static inline int is_live(void)
/* The dentry is locked, its address will do for the cookie */
static inline unsigned long dcookie_value(struct dcookie_struct * dcs)
{
/* The dentry is locked, its address will do for the cookie */
static inline unsigned long dcookie_value(struct dcookie_struct * dcs)
{
- return (unsigned long)dcs->dentry;
+ return (unsigned long)dcs->
path.
dentry;
}
}
@@
-88,19
+89,17
@@
static void hash_dcookie(struct dcookie_struct * dcs)
}
}
-static struct dcookie_struct * alloc_dcookie(struct dentry * dentry,
- struct vfsmount * vfsmnt)
+static struct dcookie_struct *alloc_dcookie(struct path *path)
{
{
- struct dcookie_struct * dcs = kmem_cache_alloc(dcookie_cache, GFP_KERNEL);
+ struct dcookie_struct *dcs = kmem_cache_alloc(dcookie_cache,
+ GFP_KERNEL);
if (!dcs)
return NULL;
if (!dcs)
return NULL;
- dentry->d_cookie = dcs;
-
- dcs->dentry = dget(dentry);
- dcs->vfsmnt = mntget(vfsmnt);
+ path->dentry->d_cookie = dcs;
+ dcs->path = *path;
+ path_get(path);
hash_dcookie(dcs);
hash_dcookie(dcs);
-
return dcs;
}
return dcs;
}
@@
-108,8
+107,7
@@
static struct dcookie_struct * alloc_dcookie(struct dentry * dentry,
/* This is the main kernel-side routine that retrieves the cookie
* value for a dentry/vfsmnt pair.
*/
/* This is the main kernel-side routine that retrieves the cookie
* value for a dentry/vfsmnt pair.
*/
-int get_dcookie(struct dentry * dentry, struct vfsmount * vfsmnt,
- unsigned long * cookie)
+int get_dcookie(struct path *path, unsigned long *cookie)
{
int err = 0;
struct dcookie_struct * dcs;
{
int err = 0;
struct dcookie_struct * dcs;
@@
-121,10
+119,10
@@
int get_dcookie(struct dentry * dentry, struct vfsmount * vfsmnt,
goto out;
}
goto out;
}
- dcs = dentry->d_cookie;
+ dcs =
path->
dentry->d_cookie;
if (!dcs)
if (!dcs)
- dcs = alloc_dcookie(
dentry, vfsmnt
);
+ dcs = alloc_dcookie(
path
);
if (!dcs) {
err = -ENOMEM;
if (!dcs) {
err = -ENOMEM;
@@
-173,7
+171,7
@@
asmlinkage long sys_lookup_dcookie(u64 cookie64, char __user * buf, size_t len)
goto out;
/* FIXME: (deleted) ? */
goto out;
/* FIXME: (deleted) ? */
- path = d_path(
dcs->dentry, dcs->vfsmnt
, kbuf, PAGE_SIZE);
+ path = d_path(
&dcs->path
, kbuf, PAGE_SIZE);
if (IS_ERR(path)) {
err = PTR_ERR(path);
if (IS_ERR(path)) {
err = PTR_ERR(path);
@@
-253,9
+251,8
@@
out_kmem:
static void free_dcookie(struct dcookie_struct * dcs)
{
static void free_dcookie(struct dcookie_struct * dcs)
{
- dcs->dentry->d_cookie = NULL;
- dput(dcs->dentry);
- mntput(dcs->vfsmnt);
+ dcs->path.dentry->d_cookie = NULL;
+ path_put(&dcs->path);
kmem_cache_free(dcookie_cache, dcs);
}
kmem_cache_free(dcookie_cache, dcs);
}