Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 229071
b: refs/heads/master
c: 31b6cea
h: refs/heads/master
i:
  229069: 371f24f
  229067: 305f080
  229063: 89b128c
  229055: 70154d0
v: v3
  • Loading branch information
M. Mohan Kumar authored and Eric Van Hensbergen committed Jan 11, 2011
1 parent a92304f commit 7b582d7
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 37 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 219fd58be62d01e30224c7af919dea77b7e392a8
refs/heads/master: 31b6ceac497954c160c61f07e76b891b1cf53c90
58 changes: 22 additions & 36 deletions trunk/fs/9p/vfs_inode_dotl.c
Original file line number Diff line number Diff line change
Expand Up @@ -755,30 +755,6 @@ v9fs_vfs_mknod_dotl(struct inode *dir, struct dentry *dentry, int omode,
return err;
}

static int
v9fs_vfs_readlink_dotl(struct dentry *dentry, char *buffer, int buflen)
{
int retval;
struct p9_fid *fid;
char *target = NULL;

P9_DPRINTK(P9_DEBUG_VFS, " %s\n", dentry->d_name.name);
retval = -EPERM;
fid = v9fs_fid_lookup(dentry);
if (IS_ERR(fid))
return PTR_ERR(fid);

retval = p9_client_readlink(fid, &target);
if (retval < 0)
return retval;

strncpy(buffer, target, buflen);
P9_DPRINTK(P9_DEBUG_VFS, "%s -> %s\n", dentry->d_name.name, buffer);

retval = strnlen(buffer, buflen);
return retval;
}

/**
* v9fs_vfs_follow_link_dotl - follow a symlink path
* @dentry: dentry for symlink
Expand All @@ -789,23 +765,33 @@ v9fs_vfs_readlink_dotl(struct dentry *dentry, char *buffer, int buflen)
static void *
v9fs_vfs_follow_link_dotl(struct dentry *dentry, struct nameidata *nd)
{
int len = 0;
int retval;
struct p9_fid *fid;
char *link = __getname();
char *target;

P9_DPRINTK(P9_DEBUG_VFS, "%s n", dentry->d_name.name);
P9_DPRINTK(P9_DEBUG_VFS, "%s\n", dentry->d_name.name);

if (!link)
if (!link) {
link = ERR_PTR(-ENOMEM);
else {
len = v9fs_vfs_readlink_dotl(dentry, link, PATH_MAX);
if (len < 0) {
__putname(link);
link = ERR_PTR(len);
} else
link[min(len, PATH_MAX-1)] = 0;
goto ndset;
}
fid = v9fs_fid_lookup(dentry);
if (IS_ERR(fid)) {
__putname(link);
link = ERR_PTR(PTR_ERR(fid));
goto ndset;
}
retval = p9_client_readlink(fid, &target);
if (!retval) {
strcpy(link, target);
kfree(target);
goto ndset;
}
__putname(link);
link = ERR_PTR(retval);
ndset:
nd_set_link(nd, link);

return NULL;
}

Expand Down Expand Up @@ -839,7 +825,7 @@ const struct inode_operations v9fs_file_inode_operations_dotl = {
};

const struct inode_operations v9fs_symlink_inode_operations_dotl = {
.readlink = v9fs_vfs_readlink_dotl,
.readlink = generic_readlink,
.follow_link = v9fs_vfs_follow_link_dotl,
.put_link = v9fs_vfs_put_link,
.getattr = v9fs_vfs_getattr_dotl,
Expand Down

0 comments on commit 7b582d7

Please sign in to comment.