+ memcpy(lli->lli_symlink_name, *symname, len);
+
+ RETURN(0);
+}
+
+static int ll_readlink(struct dentry *dentry, char *buffer, int buflen)
+{
+ struct inode *inode = dentry->d_inode;
+ struct ll_inode_info *lli = ll_i2info(inode);
+ struct ptlrpc_request *request;
+ char *symname;
+ int rc;
+ ENTRY;
+
+ CHECK_MOUNT_EPOCH(inode);
+
+ /* on symlinks lli_open_sem protects lli_symlink_name allocation/data */
+ down(&lli->lli_open_sem);
+ rc = ll_readlink_internal(inode, &request, &symname);
+ if (rc)
+ GOTO(out, rc);