aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/inode.c')
-rw-r--r--fs/nfs/inode.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 7d2d6c72aa78..2f9266406afc 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -623,7 +623,7 @@ void nfs_close_context(struct nfs_open_context *ctx, int is_sync)
623 nfs_revalidate_inode(server, inode); 623 nfs_revalidate_inode(server, inode);
624} 624}
625 625
626static struct nfs_open_context *alloc_nfs_open_context(struct path *path, struct rpc_cred *cred) 626struct nfs_open_context *alloc_nfs_open_context(struct path *path, struct rpc_cred *cred, fmode_t f_mode)
627{ 627{
628 struct nfs_open_context *ctx; 628 struct nfs_open_context *ctx;
629 629
@@ -633,6 +633,7 @@ static struct nfs_open_context *alloc_nfs_open_context(struct path *path, struct
633 path_get(&ctx->path); 633 path_get(&ctx->path);
634 ctx->cred = get_rpccred(cred); 634 ctx->cred = get_rpccred(cred);
635 ctx->state = NULL; 635 ctx->state = NULL;
636 ctx->mode = f_mode;
636 ctx->flags = 0; 637 ctx->flags = 0;
637 ctx->error = 0; 638 ctx->error = 0;
638 ctx->dir_cookie = 0; 639 ctx->dir_cookie = 0;
@@ -673,7 +674,7 @@ void put_nfs_open_context(struct nfs_open_context *ctx)
673 * Ensure that mmap has a recent RPC credential for use when writing out 674 * Ensure that mmap has a recent RPC credential for use when writing out
674 * shared pages 675 * shared pages
675 */ 676 */
676static void nfs_file_set_open_context(struct file *filp, struct nfs_open_context *ctx) 677void nfs_file_set_open_context(struct file *filp, struct nfs_open_context *ctx)
677{ 678{
678 struct inode *inode = filp->f_path.dentry->d_inode; 679 struct inode *inode = filp->f_path.dentry->d_inode;
679 struct nfs_inode *nfsi = NFS_I(inode); 680 struct nfs_inode *nfsi = NFS_I(inode);
@@ -730,11 +731,10 @@ int nfs_open(struct inode *inode, struct file *filp)
730 cred = rpc_lookup_cred(); 731 cred = rpc_lookup_cred();
731 if (IS_ERR(cred)) 732 if (IS_ERR(cred))
732 return PTR_ERR(cred); 733 return PTR_ERR(cred);
733 ctx = alloc_nfs_open_context(&filp->f_path, cred); 734 ctx = alloc_nfs_open_context(&filp->f_path, cred, filp->f_mode);
734 put_rpccred(cred); 735 put_rpccred(cred);
735 if (ctx == NULL) 736 if (ctx == NULL)
736 return -ENOMEM; 737 return -ENOMEM;
737 ctx->mode = filp->f_mode;
738 nfs_file_set_open_context(filp, ctx); 738 nfs_file_set_open_context(filp, ctx);
739 put_nfs_open_context(ctx); 739 put_nfs_open_context(ctx);
740 nfs_fscache_set_inode_cookie(inode, filp); 740 nfs_fscache_set_inode_cookie(inode, filp);