From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756930AbbFQOv2 (ORCPT ); Wed, 17 Jun 2015 10:51:28 -0400 Received: from tex.lwn.net ([70.33.254.29]:59741 "EHLO vena.lwn.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754644AbbFQOvZ (ORCPT ); Wed, 17 Jun 2015 10:51:25 -0400 Date: Wed, 17 Jun 2015 08:54:07 -0600 From: Jonathan Corbet To: Thomas de Beauchene Cc: , , Thomas de Beauchene , Al Viro Subject: Re: [PATCH] Documentation: filesystems: updated struct inode_operations documentation in vfs.txt Message-ID: <20150617085407.69df0468@lwn.net> In-Reply-To: <1434552395-31715-1-git-send-email-thomas.chauvot-de-beauchene@epitech.eu> References: <1434552395-31715-1-git-send-email-thomas.chauvot-de-beauchene@epitech.eu> Organization: LWN.net MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 17 Jun 2015 16:46:35 +0200 Thomas de Beauchene wrote: > Updated struct inode_operations documentation in vfs.txt to match > current implementation Looks good at a first glance, will probably queue it later. But please be sure to CC Al Viro (added) on patches like this; he's the expert in this area. Thanks, jon > Signed-off-by: Thomas de Beauchene > --- > Documentation/filesystems/vfs.txt | 30 +++++++++++++++++++----------- > 1 file changed, 19 insertions(+), 11 deletions(-) > > diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt > index 3cb2ccf..ff53e34 100644 > --- a/Documentation/filesystems/vfs.txt > +++ b/Documentation/filesystems/vfs.txt > @@ -341,11 +341,18 @@ struct inode_operations > ----------------------- > > This describes how the VFS can manipulate an inode in your > -filesystem. As of kernel 2.6.22, the following members are defined: > +filesystem. As of kernel 4.1, the following members are defined: > > struct inode_operations { > - int (*create) (struct inode *,struct dentry *, umode_t, bool); > struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); > + void * (*follow_link) (struct dentry *, struct nameidata *); > + int (*permission) (struct inode *, int); > + struct posix_acl * (*get_acl)(struct inode *, int); > + > + int (*readlink) (struct dentry *, char __user *,int); > + void (*put_link) (struct dentry *, struct nameidata *, void *); > + > + int (*create) (struct inode *,struct dentry *, umode_t, bool); > int (*link) (struct dentry *,struct inode *,struct dentry *); > int (*unlink) (struct inode *,struct dentry *); > int (*symlink) (struct inode *,struct dentry *,const char *); > @@ -356,23 +363,24 @@ struct inode_operations { > struct inode *, struct dentry *); > int (*rename2) (struct inode *, struct dentry *, > struct inode *, struct dentry *, unsigned int); > - int (*readlink) (struct dentry *, char __user *,int); > - void * (*follow_link) (struct dentry *, struct nameidata *); > - void (*put_link) (struct dentry *, struct nameidata *, void *); > - int (*permission) (struct inode *, int); > - int (*get_acl)(struct inode *, int); > int (*setattr) (struct dentry *, struct iattr *); > int (*getattr) (struct vfsmount *mnt, struct dentry *, struct kstat *); > int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); > ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); > ssize_t (*listxattr) (struct dentry *, char *, size_t); > int (*removexattr) (struct dentry *, const char *); > - void (*update_time)(struct inode *, struct timespec *, int); > - int (*atomic_open)(struct inode *, struct dentry *, struct file *, > - unsigned open_flag, umode_t create_mode, int *opened); > + int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, > + u64 len); > + int (*update_time)(struct inode *, struct timespec *, int); > + int (*atomic_open)(struct inode *, struct dentry *, > + struct file *, unsigned open_flag, > + umode_t create_mode, int *opened); > int (*tmpfile) (struct inode *, struct dentry *, umode_t); > + int (*set_acl)(struct inode *, struct posix_acl *, int); > + > + /* WARNING: probably going away soon, do not use! */ > int (*dentry_open)(struct dentry *, struct file *, const struct cred *); > -}; > +} ____cacheline_aligned; > > Again, all methods are called without any locks being held, unless > otherwise noted.