lkml.org 
[lkml]   [2007]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 04/12] fuse: clean up open file passing in setattr
    From: Miklos Szeredi <mszeredi@suse.cz>

    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>
    ---

    Index: linux/fs/fuse/dir.c
    ===================================================================
    --- linux.orig/fs/fuse/dir.c 2007-09-25 21:19:13.000000000 +0200
    +++ linux/fs/fuse/dir.c 2007-09-25 21:19:13.000000000 +0200
    @@ -1032,11 +1032,6 @@ static void iattr_to_fattr(struct iattr
    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;
    - }
    }

    /*
    @@ -1047,7 +1042,8 @@ static void iattr_to_fattr(struct iattr
    * 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);
    @@ -1082,6 +1078,11 @@ static int fuse_setattr(struct dentry *e

    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;
    @@ -1108,6 +1109,14 @@ static int fuse_setattr(struct dentry *e
    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)
    {
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2007-10-02 17:59    [W:4.157 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site