From 85223ef26fee5a5164a543fb028bd24910c40243 Mon Sep 17 00:00:00 2001 From: Evgeniy Polyakov Date: Thu, 22 Mar 2012 17:56:34 +0400 Subject: [PATCH] Use dentry_path() to create full path to inode object --- fs/pohmelfs/inode.c | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/fs/pohmelfs/inode.c b/fs/pohmelfs/inode.c index 5c73d943b91..3f7c623a601 100644 --- a/fs/pohmelfs/inode.c +++ b/fs/pohmelfs/inode.c @@ -77,19 +77,16 @@ static int pohmelfs_gen_id(struct pohmelfs_sb *psb, struct dnet_raw_id *id) return err; } -#define UNHASHED_OBSCURE_STRING_SIZE sizeof(" (deleted)") - /* * Create path from root for given inode. * Path is formed as set of stuctures, containing name of the object * and its inode data (mode, permissions and so on). */ -static int pohmelfs_construct_path_string(struct pohmelfs_inode *pi, void *data, int len) +static int pohmelfs_construct_path_string(struct pohmelfs_inode *pi, char *data, int len) { - struct path path; struct dentry *d; char *ptr; - int err = 0, strlen, reduce = 0; + int err; d = d_find_alias(&pi->vfs_inode); if (!d) { @@ -97,38 +94,19 @@ static int pohmelfs_construct_path_string(struct pohmelfs_inode *pi, void *data, goto err_out_exit; } - spin_lock(¤t->fs->lock); - path.mnt = mntget(current->fs->root.mnt); - spin_unlock(¤t->fs->lock); - - path.dentry = d; - - if (!IS_ROOT(d) && d_unhashed(d)) - reduce = 1; - - ptr = d_path(&path, data, len); + ptr = dentry_path_raw(d, data, len); if (IS_ERR(ptr)) { err = PTR_ERR(ptr); goto err_out_put; } - if (reduce && len >= UNHASHED_OBSCURE_STRING_SIZE) { - char *end = data + len - UNHASHED_OBSCURE_STRING_SIZE; - *end = '\0'; - } - - strlen = len - (ptr - (char *)data); - memmove(data, ptr, strlen); - ptr = data; - - err = strlen - 1; /* no including 0-byte */ + err = ptr - data - 1; /* not including 0-byte */ pr_debug("dname: '%s', len: %u, maxlen: %u, name: '%s', strlen: %d\n", - d->d_name.name, d->d_name.len, len, ptr, strlen); + d->d_name.name, d->d_name.len, len, data, err); err_out_put: dput(d); - mntput(path.mnt); err_out_exit: return err; } -- 2.11.4.GIT