nfs_open_context doesn't need struct path either
just dentry, please... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -567,7 +567,7 @@ static struct nfs_lock_context *__nfs_find_lock_context(struct nfs_open_context
|
||||
struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx)
|
||||
{
|
||||
struct nfs_lock_context *res, *new = NULL;
|
||||
struct inode *inode = ctx->path.dentry->d_inode;
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
|
||||
spin_lock(&inode->i_lock);
|
||||
res = __nfs_find_lock_context(ctx);
|
||||
@@ -594,7 +594,7 @@ struct nfs_lock_context *nfs_get_lock_context(struct nfs_open_context *ctx)
|
||||
void nfs_put_lock_context(struct nfs_lock_context *l_ctx)
|
||||
{
|
||||
struct nfs_open_context *ctx = l_ctx->open_context;
|
||||
struct inode *inode = ctx->path.dentry->d_inode;
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
|
||||
if (!atomic_dec_and_lock(&l_ctx->count, &inode->i_lock))
|
||||
return;
|
||||
@@ -620,7 +620,7 @@ void nfs_close_context(struct nfs_open_context *ctx, int is_sync)
|
||||
return;
|
||||
if (!is_sync)
|
||||
return;
|
||||
inode = ctx->path.dentry->d_inode;
|
||||
inode = ctx->dentry->d_inode;
|
||||
if (!list_empty(&NFS_I(inode)->open_files))
|
||||
return;
|
||||
server = NFS_SERVER(inode);
|
||||
@@ -629,14 +629,14 @@ void nfs_close_context(struct nfs_open_context *ctx, int is_sync)
|
||||
nfs_revalidate_inode(server, inode);
|
||||
}
|
||||
|
||||
struct nfs_open_context *alloc_nfs_open_context(struct path *path, struct rpc_cred *cred, fmode_t f_mode)
|
||||
struct nfs_open_context *alloc_nfs_open_context(struct dentry *dentry, struct rpc_cred *cred, fmode_t f_mode)
|
||||
{
|
||||
struct nfs_open_context *ctx;
|
||||
|
||||
ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
|
||||
if (ctx != NULL) {
|
||||
ctx->path = *path;
|
||||
path_get(&ctx->path);
|
||||
nfs_sb_active(dentry->d_sb);
|
||||
ctx->dentry = dget(dentry);
|
||||
ctx->cred = get_rpccred(cred);
|
||||
ctx->state = NULL;
|
||||
ctx->mode = f_mode;
|
||||
@@ -658,7 +658,8 @@ struct nfs_open_context *get_nfs_open_context(struct nfs_open_context *ctx)
|
||||
|
||||
static void __put_nfs_open_context(struct nfs_open_context *ctx, int is_sync)
|
||||
{
|
||||
struct inode *inode = ctx->path.dentry->d_inode;
|
||||
struct inode *inode = ctx->dentry->d_inode;
|
||||
struct super_block *sb = ctx->dentry->d_sb;
|
||||
|
||||
if (!list_empty(&ctx->list)) {
|
||||
if (!atomic_dec_and_lock(&ctx->lock_context.count, &inode->i_lock))
|
||||
@@ -671,7 +672,8 @@ static void __put_nfs_open_context(struct nfs_open_context *ctx, int is_sync)
|
||||
NFS_PROTO(inode)->close_context(ctx, is_sync);
|
||||
if (ctx->cred != NULL)
|
||||
put_rpccred(ctx->cred);
|
||||
path_put(&ctx->path);
|
||||
dput(ctx->dentry);
|
||||
nfs_sb_deactive(sb);
|
||||
kfree(ctx);
|
||||
}
|
||||
|
||||
@@ -741,7 +743,7 @@ int nfs_open(struct inode *inode, struct file *filp)
|
||||
cred = rpc_lookup_cred();
|
||||
if (IS_ERR(cred))
|
||||
return PTR_ERR(cred);
|
||||
ctx = alloc_nfs_open_context(&filp->f_path, cred, filp->f_mode);
|
||||
ctx = alloc_nfs_open_context(filp->f_path.dentry, cred, filp->f_mode);
|
||||
put_rpccred(cred);
|
||||
if (ctx == NULL)
|
||||
return -ENOMEM;
|
||||
|
Reference in New Issue
Block a user