Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031249AbbEEJUN (ORCPT ); Tue, 5 May 2015 05:20:13 -0400 Received: from cantor2.suse.de ([195.135.220.15]:60839 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1031228AbbEEJUK (ORCPT ); Tue, 5 May 2015 05:20:10 -0400 Date: Tue, 5 May 2015 11:20:08 +0200 From: Jan Kara To: Al Viro Cc: Linus Torvalds , Neil Brown , Christoph Hellwig , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 05/79] libfs: simple_follow_link() Message-ID: <20150505092008.GF11943@quack.suse.cz> References: <20150505052205.GS889@ZenIV.linux.org.uk> <1430803373-4948-5-git-send-email-viro@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1430803373-4948-5-git-send-email-viro@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2803 Lines: 87 On Tue 05-05-15 06:21:39, Al Viro wrote: > From: Al Viro > > let "fast" symlinks store the pointer to the body into ->i_link and > use simple_follow_link for ->follow_link() > > Signed-off-by: Al Viro Looks good. You can add: Reviewed-by: Jan Kara Honza > --- > fs/inode.c | 1 + > fs/libfs.c | 13 +++++++++++++ > include/linux/fs.h | 3 +++ > 3 files changed, 17 insertions(+) > > diff --git a/fs/inode.c b/fs/inode.c > index ea37cd1..952fb48 100644 > --- a/fs/inode.c > +++ b/fs/inode.c > @@ -152,6 +152,7 @@ int inode_init_always(struct super_block *sb, struct inode *inode) > inode->i_pipe = NULL; > inode->i_bdev = NULL; > inode->i_cdev = NULL; > + inode->i_link = NULL; > inode->i_rdev = 0; > inode->dirtied_when = 0; > > diff --git a/fs/libfs.c b/fs/libfs.c > index cb1fb4b..72e4e01 100644 > --- a/fs/libfs.c > +++ b/fs/libfs.c > @@ -1093,3 +1093,16 @@ simple_nosetlease(struct file *filp, long arg, struct file_lock **flp, > return -EINVAL; > } > EXPORT_SYMBOL(simple_nosetlease); > + > +void *simple_follow_link(struct dentry *dentry, struct nameidata *nd) > +{ > + nd_set_link(nd, d_inode(dentry)->i_link); > + return NULL; > +} > +EXPORT_SYMBOL(simple_follow_link); > + > +const struct inode_operations simple_symlink_inode_operations = { > + .follow_link = simple_follow_link, > + .readlink = generic_readlink > +}; > +EXPORT_SYMBOL(simple_symlink_inode_operations); > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 35ec87e..0ac758f 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -656,6 +656,7 @@ struct inode { > struct pipe_inode_info *i_pipe; > struct block_device *i_bdev; > struct cdev *i_cdev; > + char *i_link; > }; > > __u32 i_generation; > @@ -2721,6 +2722,8 @@ void __inode_sub_bytes(struct inode *inode, loff_t bytes); > void inode_sub_bytes(struct inode *inode, loff_t bytes); > loff_t inode_get_bytes(struct inode *inode); > void inode_set_bytes(struct inode *inode, loff_t bytes); > +void *simple_follow_link(struct dentry *, struct nameidata *); > +extern const struct inode_operations simple_symlink_inode_operations; > > extern int iterate_dir(struct file *, struct dir_context *); > > -- > 2.1.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Jan Kara SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/