Commit cd574b74 authored by Matthew Wilcox's avatar Matthew Wilcox Committed by Linus Torvalds

[PATCH] Remove d_path from sched.h

This patch from William Lee Irwin III privatizes __d_path() to dcache.c,
uninlines d_path(), moves its declaration to dcache.h, moves it to
dcache.c, and exports d_path() instead of __d_path().
parent f7efec4a
...@@ -1085,9 +1085,9 @@ void d_move(struct dentry * dentry, struct dentry * target) ...@@ -1085,9 +1085,9 @@ void d_move(struct dentry * dentry, struct dentry * target)
* *
* "buflen" should be %PAGE_SIZE or more. Caller holds the dcache_lock. * "buflen" should be %PAGE_SIZE or more. Caller holds the dcache_lock.
*/ */
char * __d_path(struct dentry *dentry, struct vfsmount *vfsmnt, static char * __d_path( struct dentry *dentry, struct vfsmount *vfsmnt,
struct dentry *root, struct vfsmount *rootmnt, struct dentry *root, struct vfsmount *rootmnt,
char *buffer, int buflen) char *buffer, int buflen)
{ {
char * end = buffer+buflen; char * end = buffer+buflen;
char * retval; char * retval;
...@@ -1140,6 +1140,25 @@ char * __d_path(struct dentry *dentry, struct vfsmount *vfsmnt, ...@@ -1140,6 +1140,25 @@ char * __d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
return retval; return retval;
} }
/* write full pathname into buffer and return start of pathname */
char * d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
char *buf, int buflen)
{
char *res;
struct vfsmount *rootmnt;
struct dentry *root;
read_lock(&current->fs->lock);
rootmnt = mntget(current->fs->rootmnt);
root = dget(current->fs->root);
read_unlock(&current->fs->lock);
spin_lock(&dcache_lock);
res = __d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
spin_unlock(&dcache_lock);
dput(root);
mntput(rootmnt);
return res;
}
/* /*
* NOTE! The user-level library version returns a * NOTE! The user-level library version returns a
* character pointer. The kernel system call just * character pointer. The kernel system call just
......
...@@ -228,8 +228,7 @@ extern struct dentry * __d_lookup(struct dentry *, struct qstr *); ...@@ -228,8 +228,7 @@ extern struct dentry * __d_lookup(struct dentry *, struct qstr *);
/* validate "insecure" dentry pointer */ /* validate "insecure" dentry pointer */
extern int d_validate(struct dentry *, struct dentry *); extern int d_validate(struct dentry *, struct dentry *);
extern char * __d_path(struct dentry *, struct vfsmount *, struct dentry *, extern char * d_path(struct dentry *, struct vfsmount *, char *, int);
struct vfsmount *, char *, int);
/* Allocation counts.. */ /* Allocation counts.. */
......
...@@ -848,26 +848,6 @@ static inline void task_unlock(struct task_struct *p) ...@@ -848,26 +848,6 @@ static inline void task_unlock(struct task_struct *p)
{ {
spin_unlock(&p->alloc_lock); spin_unlock(&p->alloc_lock);
} }
/* write full pathname into buffer and return start of pathname */
static inline char * d_path(struct dentry *dentry, struct vfsmount *vfsmnt,
char *buf, int buflen)
{
char *res;
struct vfsmount *rootmnt;
struct dentry *root;
read_lock(&current->fs->lock);
rootmnt = mntget(current->fs->rootmnt);
root = dget(current->fs->root);
read_unlock(&current->fs->lock);
spin_lock(&dcache_lock);
res = __d_path(dentry, vfsmnt, root, rootmnt, buf, buflen);
spin_unlock(&dcache_lock);
dput(root);
mntput(rootmnt);
return res;
}
/** /**
* get_task_mm - acquire a reference to the task's mm * get_task_mm - acquire a reference to the task's mm
......
...@@ -166,7 +166,7 @@ EXPORT_SYMBOL(d_alloc); ...@@ -166,7 +166,7 @@ EXPORT_SYMBOL(d_alloc);
EXPORT_SYMBOL(d_alloc_anon); EXPORT_SYMBOL(d_alloc_anon);
EXPORT_SYMBOL(d_splice_alias); EXPORT_SYMBOL(d_splice_alias);
EXPORT_SYMBOL(d_lookup); EXPORT_SYMBOL(d_lookup);
EXPORT_SYMBOL(__d_path); EXPORT_SYMBOL(d_path);
EXPORT_SYMBOL(mark_buffer_dirty); EXPORT_SYMBOL(mark_buffer_dirty);
EXPORT_SYMBOL(end_buffer_io_sync); EXPORT_SYMBOL(end_buffer_io_sync);
EXPORT_SYMBOL(__mark_inode_dirty); EXPORT_SYMBOL(__mark_inode_dirty);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment