NFS: Create custom NFS v4 write_inode() function
This gives pnfs a chance to do a layout commit inside the v4 code. Signed-off-by: Bryan Schumaker <bjschuma@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
57208fa7e5
commit
a8d8f02cf0
|
@ -202,6 +202,9 @@ struct nfs4_state_maintenance_ops {
|
||||||
extern const struct dentry_operations nfs4_dentry_operations;
|
extern const struct dentry_operations nfs4_dentry_operations;
|
||||||
extern const struct inode_operations nfs4_dir_inode_operations;
|
extern const struct inode_operations nfs4_dir_inode_operations;
|
||||||
|
|
||||||
|
/* write.c */
|
||||||
|
int nfs4_write_inode(struct inode *, struct writeback_control *);
|
||||||
|
|
||||||
/* nfs4namespace.c */
|
/* nfs4namespace.c */
|
||||||
rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *);
|
rpc_authflavor_t nfs_find_best_sec(struct nfs4_secinfo_flavors *);
|
||||||
struct rpc_clnt *nfs4_create_sec_client(struct rpc_clnt *, struct inode *, struct qstr *);
|
struct rpc_clnt *nfs4_create_sec_client(struct rpc_clnt *, struct inode *, struct qstr *);
|
||||||
|
|
|
@ -391,7 +391,7 @@ struct file_system_type nfs4_referral_fs_type = {
|
||||||
static const struct super_operations nfs4_sops = {
|
static const struct super_operations nfs4_sops = {
|
||||||
.alloc_inode = nfs_alloc_inode,
|
.alloc_inode = nfs_alloc_inode,
|
||||||
.destroy_inode = nfs_destroy_inode,
|
.destroy_inode = nfs_destroy_inode,
|
||||||
.write_inode = nfs_write_inode,
|
.write_inode = nfs4_write_inode,
|
||||||
.put_super = nfs_put_super,
|
.put_super = nfs_put_super,
|
||||||
.statfs = nfs_statfs,
|
.statfs = nfs_statfs,
|
||||||
.evict_inode = nfs4_evict_inode,
|
.evict_inode = nfs4_evict_inode,
|
||||||
|
|
|
@ -1671,9 +1671,14 @@ static int nfs_commit_unstable_pages(struct inode *inode, struct writeback_contr
|
||||||
|
|
||||||
int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)
|
int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||||
{
|
{
|
||||||
int ret;
|
return nfs_commit_unstable_pages(inode, wbc);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_NFS_V4
|
||||||
|
int nfs4_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||||
|
{
|
||||||
|
int ret = nfs_write_inode(inode, wbc);
|
||||||
|
|
||||||
ret = nfs_commit_unstable_pages(inode, wbc);
|
|
||||||
if (ret >= 0 && test_bit(NFS_INO_LAYOUTCOMMIT, &NFS_I(inode)->flags)) {
|
if (ret >= 0 && test_bit(NFS_INO_LAYOUTCOMMIT, &NFS_I(inode)->flags)) {
|
||||||
int status;
|
int status;
|
||||||
bool sync = true;
|
bool sync = true;
|
||||||
|
@ -1687,6 +1692,7 @@ int nfs_write_inode(struct inode *inode, struct writeback_control *wbc)
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* flush the inode to disk.
|
* flush the inode to disk.
|
||||||
|
|
Loading…
Reference in New Issue