Skip to content

Commit

Permalink
fuse: clean up open file passing in setattr
Browse files Browse the repository at this point in the history
Clean up supplying open file to the setattr operation.  In addition to being a
cleanup it prepares for the changes in the way the open file is passed to the
setattr method.

Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Miklos Szeredi authored and Linus Torvalds committed Oct 18, 2007
1 parent c79e322 commit 49d4914
Showing 1 changed file with 15 additions and 6 deletions.
21 changes: 15 additions & 6 deletions fs/fuse/dir.c
Original file line number Diff line number Diff line change
Expand Up @@ -1032,11 +1032,6 @@ static void iattr_to_fattr(struct iattr *iattr, struct fuse_setattr_in *arg)
arg->atime = iattr->ia_atime.tv_sec;
arg->mtime = iattr->ia_mtime.tv_sec;
}
if (ivalid & ATTR_FILE) {
struct fuse_file *ff = iattr->ia_file->private_data;
arg->valid |= FATTR_FH;
arg->fh = ff->fh;
}
}

/*
Expand All @@ -1047,7 +1042,8 @@ static void iattr_to_fattr(struct iattr *iattr, struct fuse_setattr_in *arg)
* vmtruncate() doesn't allow for this case, so do the rlimit checking
* and the actual truncation by hand.
*/
static int fuse_setattr(struct dentry *entry, struct iattr *attr)
static int fuse_do_setattr(struct dentry *entry, struct iattr *attr,
struct file *file)
{
struct inode *inode = entry->d_inode;
struct fuse_conn *fc = get_fuse_conn(inode);
Expand Down Expand Up @@ -1082,6 +1078,11 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr)

memset(&inarg, 0, sizeof(inarg));
iattr_to_fattr(attr, &inarg);
if (file) {
struct fuse_file *ff = file->private_data;
inarg.valid |= FATTR_FH;
inarg.fh = ff->fh;
}
req->in.h.opcode = FUSE_SETATTR;
req->in.h.nodeid = get_node_id(inode);
req->in.numargs = 1;
Expand All @@ -1108,6 +1109,14 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr)
return 0;
}

static int fuse_setattr(struct dentry *entry, struct iattr *attr)
{
if (attr->ia_valid & ATTR_FILE)
return fuse_do_setattr(entry, attr, attr->ia_file);
else
return fuse_do_setattr(entry, attr, NULL);
}

static int fuse_getattr(struct vfsmount *mnt, struct dentry *entry,
struct kstat *stat)
{
Expand Down

0 comments on commit 49d4914

Please sign in to comment.