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>
This commit is contained in:
parent
6bbb4ae8ff
commit
597d92891b
43
fs/nfs/dir.c
43
fs/nfs/dir.c
|
@ -46,16 +46,6 @@
|
||||||
static int nfs_opendir(struct inode *, struct file *);
|
static int nfs_opendir(struct inode *, struct file *);
|
||||||
static int nfs_closedir(struct inode *, struct file *);
|
static int nfs_closedir(struct inode *, struct file *);
|
||||||
static int nfs_readdir(struct file *, void *, filldir_t);
|
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 int nfs_fsync_dir(struct file *, loff_t, loff_t, int);
|
||||||
static loff_t nfs_llseek_dir(struct file *, loff_t, int);
|
static loff_t nfs_llseek_dir(struct file *, loff_t, int);
|
||||||
static void nfs_readdir_clear_array(struct page*);
|
static void nfs_readdir_clear_array(struct page*);
|
||||||
|
@ -69,21 +59,6 @@ const struct file_operations nfs_dir_operations = {
|
||||||
.fsync = nfs_fsync_dir,
|
.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 = {
|
const struct address_space_operations nfs_dir_aops = {
|
||||||
.freepage = nfs_readdir_clear_array,
|
.freepage = nfs_readdir_clear_array,
|
||||||
};
|
};
|
||||||
|
@ -1270,7 +1245,7 @@ const struct dentry_operations nfs_dentry_operations = {
|
||||||
.d_release = nfs_d_release,
|
.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 *res;
|
||||||
struct dentry *parent;
|
struct dentry *parent;
|
||||||
|
@ -1588,7 +1563,7 @@ out_error:
|
||||||
* that the operation succeeded on the server, but an error in the
|
* that the operation succeeded on the server, but an error in the
|
||||||
* reply path made it appear to have failed.
|
* 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)
|
umode_t mode, bool excl)
|
||||||
{
|
{
|
||||||
struct iattr attr;
|
struct iattr attr;
|
||||||
|
@ -1613,7 +1588,7 @@ out_err:
|
||||||
/*
|
/*
|
||||||
* See comments for nfs_proc_create regarding failed operations.
|
* 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)
|
nfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t rdev)
|
||||||
{
|
{
|
||||||
struct iattr attr;
|
struct iattr attr;
|
||||||
|
@ -1640,7 +1615,7 @@ out_err:
|
||||||
/*
|
/*
|
||||||
* See comments for nfs_proc_create regarding failed operations.
|
* 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;
|
struct iattr attr;
|
||||||
int error;
|
int error;
|
||||||
|
@ -1666,7 +1641,7 @@ static void nfs_dentry_handle_enoent(struct dentry *dentry)
|
||||||
d_delete(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;
|
int error;
|
||||||
|
|
||||||
|
@ -1725,7 +1700,7 @@ out:
|
||||||
*
|
*
|
||||||
* If sillyrename() returns 0, we do nothing, otherwise we unlink.
|
* 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 error;
|
||||||
int need_rehash = 0;
|
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
|
* now have a new file handle and can instantiate an in-core NFS inode
|
||||||
* and move the raw page into its mapping.
|
* 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 pagevec lru_pvec;
|
||||||
struct page *page;
|
struct page *page;
|
||||||
|
@ -1824,7 +1799,7 @@ static int nfs_symlink(struct inode *dir, struct dentry *dentry, const char *sym
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
int
|
||||||
nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
|
nfs_link(struct dentry *old_dentry, struct inode *dir, struct dentry *dentry)
|
||||||
{
|
{
|
||||||
struct inode *inode = old_dentry->d_inode;
|
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
|
* If these conditions are met, we can drop the dentries before doing
|
||||||
* the rename.
|
* 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 *new_dir, struct dentry *new_dentry)
|
||||||
{
|
{
|
||||||
struct inode *old_inode = old_dentry->d_inode;
|
struct inode *old_inode = old_dentry->d_inode;
|
||||||
|
|
|
@ -41,12 +41,6 @@
|
||||||
|
|
||||||
static const struct vm_operations_struct nfs_file_vm_ops;
|
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
|
#ifdef CONFIG_NFS_V3
|
||||||
const struct inode_operations nfs3_file_inode_operations = {
|
const struct inode_operations nfs3_file_inode_operations = {
|
||||||
.permission = nfs_permission,
|
.permission = nfs_permission,
|
||||||
|
|
|
@ -247,6 +247,15 @@ extern struct nfs_client *nfs_init_client(struct nfs_client *clp,
|
||||||
/* dir.c */
|
/* dir.c */
|
||||||
extern int nfs_access_cache_shrinker(struct shrinker *shrink,
|
extern int nfs_access_cache_shrinker(struct shrinker *shrink,
|
||||||
struct shrink_control *sc);
|
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 */
|
/* inode.c */
|
||||||
extern struct workqueue_struct *nfsiod_workqueue;
|
extern struct workqueue_struct *nfsiod_workqueue;
|
||||||
|
|
|
@ -745,6 +745,27 @@ static int nfs_return_delegation(struct inode *inode)
|
||||||
return 0;
|
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 = {
|
const struct nfs_rpc_ops nfs_v2_clientops = {
|
||||||
.version = 2, /* protocol version */
|
.version = 2, /* protocol version */
|
||||||
.dentry_ops = &nfs_dentry_operations,
|
.dentry_ops = &nfs_dentry_operations,
|
||||||
|
|
|
@ -427,7 +427,6 @@ extern __be32 root_nfs_parse_addr(char *name); /*__init*/
|
||||||
/*
|
/*
|
||||||
* linux/fs/nfs/file.c
|
* linux/fs/nfs/file.c
|
||||||
*/
|
*/
|
||||||
extern const struct inode_operations nfs_file_inode_operations;
|
|
||||||
#ifdef CONFIG_NFS_V3
|
#ifdef CONFIG_NFS_V3
|
||||||
extern const struct inode_operations nfs3_file_inode_operations;
|
extern const struct inode_operations nfs3_file_inode_operations;
|
||||||
#endif /* CONFIG_NFS_V3 */
|
#endif /* CONFIG_NFS_V3 */
|
||||||
|
@ -485,7 +484,6 @@ extern ssize_t nfs_file_direct_write(struct kiocb *iocb,
|
||||||
/*
|
/*
|
||||||
* linux/fs/nfs/dir.c
|
* linux/fs/nfs/dir.c
|
||||||
*/
|
*/
|
||||||
extern const struct inode_operations nfs_dir_inode_operations;
|
|
||||||
#ifdef CONFIG_NFS_V3
|
#ifdef CONFIG_NFS_V3
|
||||||
extern const struct inode_operations nfs3_dir_inode_operations;
|
extern const struct inode_operations nfs3_dir_inode_operations;
|
||||||
#endif /* CONFIG_NFS_V3 */
|
#endif /* CONFIG_NFS_V3 */
|
||||||
|
|
Loading…
Reference in New Issue