diff options
| author | Bryan Schumaker <bjschuma@netapp.com> | 2012-07-17 00:39:10 +0400 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2012-07-17 21:32:55 +0400 | 
| commit | 597d92891b8859b4b4949fd08e25e60fc80ddaaf (patch) | |
| tree | c379c890a62a36b36b443cf23f81daa1605901b0 | |
| parent | 6bbb4ae8ffc4eef825c8742eff1fefae69a82e41 (diff) | |
| download | linux-597d92891b8859b4b4949fd08e25e60fc80ddaaf.tar.xz | |
NFS: Split out NFS v2 inode operations
This patch moves the NFS v2 file and directory inode functions into
files that are only compiled whet CONFIG_NFS_V2 is enabled.
Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
| -rw-r--r-- | fs/nfs/dir.c | 43 | ||||
| -rw-r--r-- | fs/nfs/file.c | 6 | ||||
| -rw-r--r-- | fs/nfs/internal.h | 9 | ||||
| -rw-r--r-- | fs/nfs/proc.c | 21 | ||||
| -rw-r--r-- | include/linux/nfs_fs.h | 2 | 
5 files changed, 39 insertions, 42 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index b7136853ca9c..9ae329d62340 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -46,16 +46,6 @@  static int nfs_opendir(struct inode *, struct file *);  static int nfs_closedir(struct inode *, struct file *);  static int nfs_readdir(struct file *, void *, filldir_t); -static struct dentry *nfs_lookup(struct inode *, struct dentry *, unsigned int); -static int nfs_create(struct inode *, struct dentry *, umode_t, bool); -static int nfs_mkdir(struct inode *, struct dentry *, umode_t); -static int nfs_rmdir(struct inode *, struct dentry *); -static int nfs_unlink(struct inode *, struct dentry *); -static int nfs_symlink(struct inode *, struct dentry *, const char *); -static int nfs_link(struct dentry *, struct inode *, struct dentry *); -static int nfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); -static int nfs_rename(struct inode *, struct dentry *, -		      struct inode *, struct dentry *);  static int nfs_fsync_dir(struct file *, loff_t, loff_t, int);  static loff_t nfs_llseek_dir(struct file *, loff_t, int);  static void nfs_readdir_clear_array(struct page*); @@ -69,21 +59,6 @@ const struct file_operations nfs_dir_operations = {  	.fsync		= nfs_fsync_dir,  }; -const struct inode_operations nfs_dir_inode_operations = { -	.create		= nfs_create, -	.lookup		= nfs_lookup, -	.link		= nfs_link, -	.unlink		= nfs_unlink, -	.symlink	= nfs_symlink, -	.mkdir		= nfs_mkdir, -	.rmdir		= nfs_rmdir, -	.mknod		= nfs_mknod, -	.rename		= nfs_rename, -	.permission	= nfs_permission, -	.getattr	= nfs_getattr, -	.setattr	= nfs_setattr, -}; -  const struct address_space_operations nfs_dir_aops = {  	.freepage = nfs_readdir_clear_array,  }; @@ -1270,7 +1245,7 @@ const struct dentry_operations nfs_dentry_operations = {  	.d_release	= nfs_d_release,  }; -static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags) +struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, unsigned int flags)  {  	struct dentry *res;  	struct dentry *parent; @@ -1588,7 +1563,7 @@ out_error:   * that the operation succeeded on the server, but an error in the   * reply path made it appear to have failed.   */ -static int nfs_create(struct inode *dir, struct dentry *dentry, +int nfs_create(struct inode *dir, struct dentry *dentry,  		umode_t mode, bool excl)  {  	struct iattr attr; @@ -1613,7 +1588,7 @@ out_err:  /*   * See comments for nfs_proc_create regarding failed operations.   */ -static int +int  nfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev)  {  	struct iattr attr; @@ -1640,7 +1615,7 @@ out_err:  /*   * See comments for nfs_proc_create regarding failed operations.   */ -static int nfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) +int nfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)  {  	struct iattr attr;  	int error; @@ -1666,7 +1641,7 @@ static void nfs_dentry_handle_enoent(struct dentry *dentry)  		d_delete(dentry);  } -static int nfs_rmdir(struct inode *dir, struct dentry *dentry) +int nfs_rmdir(struct inode *dir, struct dentry *dentry)  {  	int error; @@ -1725,7 +1700,7 @@ out:   *   *  If sillyrename() returns 0, we do nothing, otherwise we unlink.   */ -static int nfs_unlink(struct inode *dir, struct dentry *dentry) +int nfs_unlink(struct inode *dir, struct dentry *dentry)  {  	int error;  	int need_rehash = 0; @@ -1769,7 +1744,7 @@ static int nfs_unlink(struct inode *dir, struct dentry *dentry)   * now have a new file handle and can instantiate an in-core NFS inode   * and move the raw page into its mapping.   */ -static int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname) +int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *symname)  {  	struct pagevec lru_pvec;  	struct page *page; @@ -1824,7 +1799,7 @@ static int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *sym  	return 0;  } -static int  +int  nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)  {  	struct inode *inode = old_dentry->d_inode; @@ -1869,7 +1844,7 @@ nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)   * If these conditions are met, we can drop the dentries before doing   * the rename.   */ -static int nfs_rename(struct inode *old_dir, struct dentry *old_dentry, +int nfs_rename(struct inode *old_dir, struct dentry *old_dentry,  		      struct inode *new_dir, struct dentry *new_dentry)  {  	struct inode *old_inode = old_dentry->d_inode; diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 57a22a1533e2..7da8745e22ac 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c @@ -41,12 +41,6 @@  static const struct vm_operations_struct nfs_file_vm_ops; -const struct inode_operations nfs_file_inode_operations = { -	.permission	= nfs_permission, -	.getattr	= nfs_getattr, -	.setattr	= nfs_setattr, -}; -  #ifdef CONFIG_NFS_V3  const struct inode_operations nfs3_file_inode_operations = {  	.permission	= nfs_permission, diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 7edc172c371e..35a8ffec69f6 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h @@ -247,6 +247,15 @@ extern struct nfs_client *nfs_init_client(struct nfs_client *clp,  /* dir.c */  extern int nfs_access_cache_shrinker(struct shrinker *shrink,  					struct shrink_control *sc); +struct dentry *nfs_lookup(struct inode *, struct dentry *, unsigned int); +int nfs_create(struct inode *, struct dentry *, umode_t, bool); +int nfs_mkdir(struct inode *, struct dentry *, umode_t); +int nfs_rmdir(struct inode *, struct dentry *); +int nfs_unlink(struct inode *, struct dentry *); +int nfs_symlink(struct inode *, struct dentry *, const char *); +int nfs_link(struct dentry *, struct inode *, struct dentry *); +int nfs_mknod(struct inode *, struct dentry *, umode_t, dev_t); +int nfs_rename(struct inode *, struct dentry *, struct inode *, struct dentry *);  /* inode.c */  extern struct workqueue_struct *nfsiod_workqueue; diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index c5ed1c0a8ab7..4d3356af3309 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c @@ -745,6 +745,27 @@ static int nfs_return_delegation(struct inode *inode)  	return 0;  } +static const struct inode_operations nfs_dir_inode_operations = { +	.create		= nfs_create, +	.lookup		= nfs_lookup, +	.link		= nfs_link, +	.unlink		= nfs_unlink, +	.symlink	= nfs_symlink, +	.mkdir		= nfs_mkdir, +	.rmdir		= nfs_rmdir, +	.mknod		= nfs_mknod, +	.rename		= nfs_rename, +	.permission	= nfs_permission, +	.getattr	= nfs_getattr, +	.setattr	= nfs_setattr, +}; + +static const struct inode_operations nfs_file_inode_operations = { +	.permission	= nfs_permission, +	.getattr	= nfs_getattr, +	.setattr	= nfs_setattr, +}; +  const struct nfs_rpc_ops nfs_v2_clientops = {  	.version	= 2,		       /* protocol version */  	.dentry_ops	= &nfs_dentry_operations, diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h index b23cfc120edb..6c38bc9c0081 100644 --- a/include/linux/nfs_fs.h +++ b/include/linux/nfs_fs.h @@ -427,7 +427,6 @@ extern __be32 root_nfs_parse_addr(char *name); /*__init*/  /*   * linux/fs/nfs/file.c   */ -extern const struct inode_operations nfs_file_inode_operations;  #ifdef CONFIG_NFS_V3  extern const struct inode_operations nfs3_file_inode_operations;  #endif /* CONFIG_NFS_V3 */ @@ -485,7 +484,6 @@ extern ssize_t nfs_file_direct_write(struct kiocb *iocb,  /*   * linux/fs/nfs/dir.c   */ -extern const struct inode_operations nfs_dir_inode_operations;  #ifdef CONFIG_NFS_V3  extern const struct inode_operations nfs3_dir_inode_operations;  #endif /* CONFIG_NFS_V3 */  | 
