fuse: Add fuse_inode argument to fuse_prepare_release()
Here is preparation for next patches, which introduce new fi->lock for protection of ff->write_entry linked into fi->write_files. This patch just passes new argument to the function. Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
b782911b52
commit
ebf84d0c72
|
@ -141,10 +141,11 @@ static int cuse_open(struct inode *inode, struct file *file)
|
|||
|
||||
static int cuse_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct fuse_inode *fi = get_fuse_inode(inode);
|
||||
struct fuse_file *ff = file->private_data;
|
||||
struct fuse_conn *fc = ff->fc;
|
||||
|
||||
fuse_sync_release(ff, file->f_flags);
|
||||
fuse_sync_release(fi, ff, file->f_flags);
|
||||
fuse_conn_put(fc);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -400,6 +400,7 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
|
|||
struct fuse_create_in inarg;
|
||||
struct fuse_open_out outopen;
|
||||
struct fuse_entry_out outentry;
|
||||
struct fuse_inode *fi;
|
||||
struct fuse_file *ff;
|
||||
|
||||
/* Userspace expects S_IFREG in create mode */
|
||||
|
@ -451,7 +452,7 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
|
|||
&outentry.attr, entry_attr_timeout(&outentry), 0);
|
||||
if (!inode) {
|
||||
flags &= ~(O_CREAT | O_EXCL | O_TRUNC);
|
||||
fuse_sync_release(ff, flags);
|
||||
fuse_sync_release(NULL, ff, flags);
|
||||
fuse_queue_forget(fc, forget, outentry.nodeid, 1);
|
||||
err = -ENOMEM;
|
||||
goto out_err;
|
||||
|
@ -462,7 +463,8 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
|
|||
fuse_dir_changed(dir);
|
||||
err = finish_open(file, entry, generic_file_open);
|
||||
if (err) {
|
||||
fuse_sync_release(ff, flags);
|
||||
fi = get_fuse_inode(inode);
|
||||
fuse_sync_release(fi, ff, flags);
|
||||
} else {
|
||||
file->private_data = ff;
|
||||
fuse_finish_open(inode, file);
|
||||
|
|
|
@ -224,7 +224,8 @@ int fuse_open_common(struct inode *inode, struct file *file, bool isdir)
|
|||
return err;
|
||||
}
|
||||
|
||||
static void fuse_prepare_release(struct fuse_file *ff, int flags, int opcode)
|
||||
static void fuse_prepare_release(struct fuse_inode *fi, struct fuse_file *ff,
|
||||
int flags, int opcode)
|
||||
{
|
||||
struct fuse_conn *fc = ff->fc;
|
||||
struct fuse_req *req = ff->reserved_req;
|
||||
|
@ -249,11 +250,12 @@ static void fuse_prepare_release(struct fuse_file *ff, int flags, int opcode)
|
|||
|
||||
void fuse_release_common(struct file *file, bool isdir)
|
||||
{
|
||||
struct fuse_inode *fi = get_fuse_inode(file_inode(file));
|
||||
struct fuse_file *ff = file->private_data;
|
||||
struct fuse_req *req = ff->reserved_req;
|
||||
int opcode = isdir ? FUSE_RELEASEDIR : FUSE_RELEASE;
|
||||
|
||||
fuse_prepare_release(ff, file->f_flags, opcode);
|
||||
fuse_prepare_release(fi, ff, file->f_flags, opcode);
|
||||
|
||||
if (ff->flock) {
|
||||
struct fuse_release_in *inarg = &req->misc.release.in;
|
||||
|
@ -295,10 +297,10 @@ static int fuse_release(struct inode *inode, struct file *file)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void fuse_sync_release(struct fuse_file *ff, int flags)
|
||||
void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff, int flags)
|
||||
{
|
||||
WARN_ON(refcount_read(&ff->count) > 1);
|
||||
fuse_prepare_release(ff, flags, FUSE_RELEASE);
|
||||
fuse_prepare_release(fi, ff, flags, FUSE_RELEASE);
|
||||
/*
|
||||
* iput(NULL) is a no-op and since the refcount is 1 and everything's
|
||||
* synchronous, we are fine with not doing igrab() here"
|
||||
|
|
|
@ -817,7 +817,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc);
|
|||
void fuse_file_free(struct fuse_file *ff);
|
||||
void fuse_finish_open(struct inode *inode, struct file *file);
|
||||
|
||||
void fuse_sync_release(struct fuse_file *ff, int flags);
|
||||
void fuse_sync_release(struct fuse_inode *fi, struct fuse_file *ff, int flags);
|
||||
|
||||
/**
|
||||
* Send RELEASE or RELEASEDIR request
|
||||
|
|
Loading…
Reference in New Issue