fuse: flatten 'struct fuse_args'
authorMiklos Szeredi <mszeredi@redhat.com>
Tue, 10 Sep 2019 13:04:08 +0000 (15:04 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Tue, 10 Sep 2019 14:29:48 +0000 (16:29 +0200)
...to make future expansion simpler.  The hiearachical structure is a
historical thing that does not serve any practical purpose.

The generated code is excatly the same before and after the patch.

Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/dev.c
fs/fuse/dir.c
fs/fuse/file.c
fs/fuse/fuse_i.h
fs/fuse/inode.c
fs/fuse/xattr.c

index 5a5dd6b..e865c6b 100644 (file)
@@ -590,32 +590,32 @@ EXPORT_SYMBOL_GPL(fuse_request_send);
 
 static void fuse_adjust_compat(struct fuse_conn *fc, struct fuse_args *args)
 {
-       if (fc->minor < 4 && args->in.h.opcode == FUSE_STATFS)
-               args->out.args[0].size = FUSE_COMPAT_STATFS_SIZE;
+       if (fc->minor < 4 && args->opcode == FUSE_STATFS)
+               args->out_args[0].size = FUSE_COMPAT_STATFS_SIZE;
 
        if (fc->minor < 9) {
-               switch (args->in.h.opcode) {
+               switch (args->opcode) {
                case FUSE_LOOKUP:
                case FUSE_CREATE:
                case FUSE_MKNOD:
                case FUSE_MKDIR:
                case FUSE_SYMLINK:
                case FUSE_LINK:
-                       args->out.args[0].size = FUSE_COMPAT_ENTRY_OUT_SIZE;
+                       args->out_args[0].size = FUSE_COMPAT_ENTRY_OUT_SIZE;
                        break;
                case FUSE_GETATTR:
                case FUSE_SETATTR:
-                       args->out.args[0].size = FUSE_COMPAT_ATTR_OUT_SIZE;
+                       args->out_args[0].size = FUSE_COMPAT_ATTR_OUT_SIZE;
                        break;
                }
        }
        if (fc->minor < 12) {
-               switch (args->in.h.opcode) {
+               switch (args->opcode) {
                case FUSE_CREATE:
-                       args->in.args[0].size = sizeof(struct fuse_open_in);
+                       args->in_args[0].size = sizeof(struct fuse_open_in);
                        break;
                case FUSE_MKNOD:
-                       args->in.args[0].size = FUSE_COMPAT_MKNOD_IN_SIZE;
+                       args->in_args[0].size = FUSE_COMPAT_MKNOD_IN_SIZE;
                        break;
                }
        }
@@ -633,19 +633,19 @@ ssize_t fuse_simple_request(struct fuse_conn *fc, struct fuse_args *args)
        /* Needs to be done after fuse_get_req() so that fc->minor is valid */
        fuse_adjust_compat(fc, args);
 
-       req->in.h.opcode = args->in.h.opcode;
-       req->in.h.nodeid = args->in.h.nodeid;
-       req->in.numargs = args->in.numargs;
-       memcpy(req->in.args, args->in.args,
-              args->in.numargs * sizeof(struct fuse_in_arg));
-       req->out.argvar = args->out.argvar;
-       req->out.numargs = args->out.numargs;
-       memcpy(req->out.args, args->out.args,
-              args->out.numargs * sizeof(struct fuse_arg));
+       req->in.h.opcode = args->opcode;
+       req->in.h.nodeid = args->nodeid;
+       req->in.numargs = args->in_numargs;
+       memcpy(req->in.args, args->in_args,
+              args->in_numargs * sizeof(struct fuse_in_arg));
+       req->out.argvar = args->out_argvar;
+       req->out.numargs = args->out_numargs;
+       memcpy(req->out.args, args->out_args,
+              args->out_numargs * sizeof(struct fuse_arg));
        fuse_request_send(fc, req);
        ret = req->out.h.error;
-       if (!ret && args->out.argvar) {
-               BUG_ON(args->out.numargs != 1);
+       if (!ret && args->out_argvar) {
+               BUG_ON(args->out_numargs != 1);
                ret = req->out.args[0].size;
        }
        fuse_put_request(fc, req);
index dd0f64f..30a9609 100644 (file)
@@ -139,14 +139,14 @@ static void fuse_lookup_init(struct fuse_conn *fc, struct fuse_args *args,
                             struct fuse_entry_out *outarg)
 {
        memset(outarg, 0, sizeof(struct fuse_entry_out));
-       args->in.h.opcode = FUSE_LOOKUP;
-       args->in.h.nodeid = nodeid;
-       args->in.numargs = 1;
-       args->in.args[0].size = name->len + 1;
-       args->in.args[0].value = name->name;
-       args->out.numargs = 1;
-       args->out.args[0].size = sizeof(struct fuse_entry_out);
-       args->out.args[0].value = outarg;
+       args->opcode = FUSE_LOOKUP;
+       args->nodeid = nodeid;
+       args->in_numargs = 1;
+       args->in_args[0].size = name->len + 1;
+       args->in_args[0].value = name->name;
+       args->out_numargs = 1;
+       args->out_args[0].size = sizeof(struct fuse_entry_out);
+       args->out_args[0].value = outarg;
 }
 
 /*
@@ -410,18 +410,18 @@ static int fuse_create_open(struct inode *dir, struct dentry *entry,
        inarg.flags = flags;
        inarg.mode = mode;
        inarg.umask = current_umask();
-       args.in.h.opcode = FUSE_CREATE;
-       args.in.h.nodeid = get_node_id(dir);
-       args.in.numargs = 2;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = entry->d_name.len + 1;
-       args.in.args[1].value = entry->d_name.name;
-       args.out.numargs = 2;
-       args.out.args[0].size = sizeof(outentry);
-       args.out.args[0].value = &outentry;
-       args.out.args[1].size = sizeof(outopen);
-       args.out.args[1].value = &outopen;
+       args.opcode = FUSE_CREATE;
+       args.nodeid = get_node_id(dir);
+       args.in_numargs = 2;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = entry->d_name.len + 1;
+       args.in_args[1].value = entry->d_name.name;
+       args.out_numargs = 2;
+       args.out_args[0].size = sizeof(outentry);
+       args.out_args[0].value = &outentry;
+       args.out_args[1].size = sizeof(outopen);
+       args.out_args[1].value = &outopen;
        err = fuse_simple_request(fc, &args);
        if (err)
                goto out_free_ff;
@@ -526,10 +526,10 @@ static int create_new_entry(struct fuse_conn *fc, struct fuse_args *args,
                return -ENOMEM;
 
        memset(&outarg, 0, sizeof(outarg));
-       args->in.h.nodeid = get_node_id(dir);
-       args->out.numargs = 1;
-       args->out.args[0].size = sizeof(outarg);
-       args->out.args[0].value = &outarg;
+       args->nodeid = get_node_id(dir);
+       args->out_numargs = 1;
+       args->out_args[0].size = sizeof(outarg);
+       args->out_args[0].value = &outarg;
        err = fuse_simple_request(fc, args);
        if (err)
                goto out_put_forget_req;
@@ -582,12 +582,12 @@ static int fuse_mknod(struct inode *dir, struct dentry *entry, umode_t mode,
        inarg.mode = mode;
        inarg.rdev = new_encode_dev(rdev);
        inarg.umask = current_umask();
-       args.in.h.opcode = FUSE_MKNOD;
-       args.in.numargs = 2;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = entry->d_name.len + 1;
-       args.in.args[1].value = entry->d_name.name;
+       args.opcode = FUSE_MKNOD;
+       args.in_numargs = 2;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = entry->d_name.len + 1;
+       args.in_args[1].value = entry->d_name.name;
        return create_new_entry(fc, &args, dir, entry, mode);
 }
 
@@ -609,12 +609,12 @@ static int fuse_mkdir(struct inode *dir, struct dentry *entry, umode_t mode)
        memset(&inarg, 0, sizeof(inarg));
        inarg.mode = mode;
        inarg.umask = current_umask();
-       args.in.h.opcode = FUSE_MKDIR;
-       args.in.numargs = 2;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = entry->d_name.len + 1;
-       args.in.args[1].value = entry->d_name.name;
+       args.opcode = FUSE_MKDIR;
+       args.in_numargs = 2;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = entry->d_name.len + 1;
+       args.in_args[1].value = entry->d_name.name;
        return create_new_entry(fc, &args, dir, entry, S_IFDIR);
 }
 
@@ -625,12 +625,12 @@ static int fuse_symlink(struct inode *dir, struct dentry *entry,
        unsigned len = strlen(link) + 1;
        FUSE_ARGS(args);
 
-       args.in.h.opcode = FUSE_SYMLINK;
-       args.in.numargs = 2;
-       args.in.args[0].size = entry->d_name.len + 1;
-       args.in.args[0].value = entry->d_name.name;
-       args.in.args[1].size = len;
-       args.in.args[1].value = link;
+       args.opcode = FUSE_SYMLINK;
+       args.in_numargs = 2;
+       args.in_args[0].size = entry->d_name.len + 1;
+       args.in_args[0].value = entry->d_name.name;
+       args.in_args[1].size = len;
+       args.in_args[1].value = link;
        return create_new_entry(fc, &args, dir, entry, S_IFLNK);
 }
 
@@ -648,11 +648,11 @@ static int fuse_unlink(struct inode *dir, struct dentry *entry)
        struct fuse_conn *fc = get_fuse_conn(dir);
        FUSE_ARGS(args);
 
-       args.in.h.opcode = FUSE_UNLINK;
-       args.in.h.nodeid = get_node_id(dir);
-       args.in.numargs = 1;
-       args.in.args[0].size = entry->d_name.len + 1;
-       args.in.args[0].value = entry->d_name.name;
+       args.opcode = FUSE_UNLINK;
+       args.nodeid = get_node_id(dir);
+       args.in_numargs = 1;
+       args.in_args[0].size = entry->d_name.len + 1;
+       args.in_args[0].value = entry->d_name.name;
        err = fuse_simple_request(fc, &args);
        if (!err) {
                struct inode *inode = d_inode(entry);
@@ -684,11 +684,11 @@ static int fuse_rmdir(struct inode *dir, struct dentry *entry)
        struct fuse_conn *fc = get_fuse_conn(dir);
        FUSE_ARGS(args);
 
-       args.in.h.opcode = FUSE_RMDIR;
-       args.in.h.nodeid = get_node_id(dir);
-       args.in.numargs = 1;
-       args.in.args[0].size = entry->d_name.len + 1;
-       args.in.args[0].value = entry->d_name.name;
+       args.opcode = FUSE_RMDIR;
+       args.nodeid = get_node_id(dir);
+       args.in_numargs = 1;
+       args.in_args[0].size = entry->d_name.len + 1;
+       args.in_args[0].value = entry->d_name.name;
        err = fuse_simple_request(fc, &args);
        if (!err) {
                clear_nlink(d_inode(entry));
@@ -711,15 +711,15 @@ static int fuse_rename_common(struct inode *olddir, struct dentry *oldent,
        memset(&inarg, 0, argsize);
        inarg.newdir = get_node_id(newdir);
        inarg.flags = flags;
-       args.in.h.opcode = opcode;
-       args.in.h.nodeid = get_node_id(olddir);
-       args.in.numargs = 3;
-       args.in.args[0].size = argsize;
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = oldent->d_name.len + 1;
-       args.in.args[1].value = oldent->d_name.name;
-       args.in.args[2].size = newent->d_name.len + 1;
-       args.in.args[2].value = newent->d_name.name;
+       args.opcode = opcode;
+       args.nodeid = get_node_id(olddir);
+       args.in_numargs = 3;
+       args.in_args[0].size = argsize;
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = oldent->d_name.len + 1;
+       args.in_args[1].value = oldent->d_name.name;
+       args.in_args[2].size = newent->d_name.len + 1;
+       args.in_args[2].value = newent->d_name.name;
        err = fuse_simple_request(fc, &args);
        if (!err) {
                /* ctime changes */
@@ -796,12 +796,12 @@ static int fuse_link(struct dentry *entry, struct inode *newdir,
 
        memset(&inarg, 0, sizeof(inarg));
        inarg.oldnodeid = get_node_id(inode);
-       args.in.h.opcode = FUSE_LINK;
-       args.in.numargs = 2;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = newent->d_name.len + 1;
-       args.in.args[1].value = newent->d_name.name;
+       args.opcode = FUSE_LINK;
+       args.in_numargs = 2;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = newent->d_name.len + 1;
+       args.in_args[1].value = newent->d_name.name;
        err = create_new_entry(fc, &args, newdir, newent, inode->i_mode);
        /* Contrary to "normal" filesystems it can happen that link
           makes two "logical" inodes point to the same "physical"
@@ -884,14 +884,14 @@ static int fuse_do_getattr(struct inode *inode, struct kstat *stat,
                inarg.getattr_flags |= FUSE_GETATTR_FH;
                inarg.fh = ff->fh;
        }
-       args.in.h.opcode = FUSE_GETATTR;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.opcode = FUSE_GETATTR;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (!err) {
                if ((inode->i_mode ^ outarg.attr.mode) & S_IFMT) {
@@ -1056,11 +1056,11 @@ static int fuse_access(struct inode *inode, int mask)
 
        memset(&inarg, 0, sizeof(inarg));
        inarg.mask = mask & (MAY_READ | MAY_WRITE | MAY_EXEC);
-       args.in.h.opcode = FUSE_ACCESS;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
+       args.opcode = FUSE_ACCESS;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS) {
                fc->no_access = 1;
@@ -1383,14 +1383,14 @@ static void fuse_setattr_fill(struct fuse_conn *fc, struct fuse_args *args,
                              struct fuse_setattr_in *inarg_p,
                              struct fuse_attr_out *outarg_p)
 {
-       args->in.h.opcode = FUSE_SETATTR;
-       args->in.h.nodeid = get_node_id(inode);
-       args->in.numargs = 1;
-       args->in.args[0].size = sizeof(*inarg_p);
-       args->in.args[0].value = inarg_p;
-       args->out.numargs = 1;
-       args->out.args[0].size = sizeof(*outarg_p);
-       args->out.args[0].value = outarg_p;
+       args->opcode = FUSE_SETATTR;
+       args->nodeid = get_node_id(inode);
+       args->in_numargs = 1;
+       args->in_args[0].size = sizeof(*inarg_p);
+       args->in_args[0].value = inarg_p;
+       args->out_numargs = 1;
+       args->out_args[0].size = sizeof(*outarg_p);
+       args->out_args[0].value = outarg_p;
 }
 
 /*
index e076c2c..1f90722 100644 (file)
@@ -29,14 +29,14 @@ static int fuse_send_open(struct fuse_conn *fc, u64 nodeid, struct file *file,
        inarg.flags = file->f_flags & ~(O_CREAT | O_EXCL | O_NOCTTY);
        if (!fc->atomic_o_trunc)
                inarg.flags &= ~O_TRUNC;
-       args.in.h.opcode = opcode;
-       args.in.h.nodeid = nodeid;
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(*outargp);
-       args.out.args[0].value = outargp;
+       args.opcode = opcode;
+       args.nodeid = nodeid;
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(*outargp);
+       args.out_args[0].value = outargp;
 
        return fuse_simple_request(fc, &args);
 }
@@ -464,11 +464,11 @@ int fuse_fsync_common(struct file *file, loff_t start, loff_t end,
        memset(&inarg, 0, sizeof(inarg));
        inarg.fh = ff->fh;
        inarg.fsync_flags = datasync ? FUSE_FSYNC_FDATASYNC : 0;
-       args.in.h.opcode = opcode;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
+       args.opcode = opcode;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
        return fuse_simple_request(fc, &args);
 }
 
@@ -2221,11 +2221,11 @@ static void fuse_lk_fill(struct fuse_args *args, struct file *file,
        inarg->lk.pid = pid;
        if (flock)
                inarg->lk_flags |= FUSE_LK_FLOCK;
-       args->in.h.opcode = opcode;
-       args->in.h.nodeid = get_node_id(inode);
-       args->in.numargs = 1;
-       args->in.args[0].size = sizeof(*inarg);
-       args->in.args[0].value = inarg;
+       args->opcode = opcode;
+       args->nodeid = get_node_id(inode);
+       args->in_numargs = 1;
+       args->in_args[0].size = sizeof(*inarg);
+       args->in_args[0].value = inarg;
 }
 
 static int fuse_getlk(struct file *file, struct file_lock *fl)
@@ -2238,9 +2238,9 @@ static int fuse_getlk(struct file *file, struct file_lock *fl)
        int err;
 
        fuse_lk_fill(&args, file, fl, FUSE_GETLK, 0, 0, &inarg);
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (!err)
                err = convert_fuse_file_lock(fc, &outarg.lk, fl);
@@ -2335,14 +2335,14 @@ static sector_t fuse_bmap(struct address_space *mapping, sector_t block)
        memset(&inarg, 0, sizeof(inarg));
        inarg.block = block;
        inarg.blocksize = inode->i_sb->s_blocksize;
-       args.in.h.opcode = FUSE_BMAP;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.opcode = FUSE_BMAP;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS)
                fc->no_bmap = 1;
@@ -2367,14 +2367,14 @@ static loff_t fuse_lseek(struct file *file, loff_t offset, int whence)
        if (fc->no_lseek)
                goto fallback;
 
-       args.in.h.opcode = FUSE_LSEEK;
-       args.in.h.nodeid = ff->nodeid;
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.opcode = FUSE_LSEEK;
+       args.nodeid = ff->nodeid;
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (err) {
                if (err == -ENOSYS) {
@@ -2860,14 +2860,14 @@ __poll_t fuse_file_poll(struct file *file, poll_table *wait)
                fuse_register_polled_file(fc, ff);
        }
 
-       args.in.h.opcode = FUSE_POLL;
-       args.in.h.nodeid = ff->nodeid;
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.opcode = FUSE_POLL;
+       args.nodeid = ff->nodeid;
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
 
        if (!err)
@@ -3075,11 +3075,11 @@ static long fuse_file_fallocate(struct file *file, int mode, loff_t offset,
        if (!(mode & FALLOC_FL_KEEP_SIZE))
                set_bit(FUSE_I_SIZE_UNSTABLE, &fi->state);
 
-       args.in.h.opcode = FUSE_FALLOCATE;
-       args.in.h.nodeid = ff->nodeid;
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
+       args.opcode = FUSE_FALLOCATE;
+       args.nodeid = ff->nodeid;
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS) {
                fc->no_fallocate = 1;
@@ -3167,14 +3167,14 @@ static ssize_t __fuse_copy_file_range(struct file *file_in, loff_t pos_in,
        if (is_unstable)
                set_bit(FUSE_I_SIZE_UNSTABLE, &fi_out->state);
 
-       args.in.h.opcode = FUSE_COPY_FILE_RANGE;
-       args.in.h.nodeid = ff_in->nodeid;
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.opcode = FUSE_COPY_FILE_RANGE;
+       args.nodeid = ff_in->nodeid;
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS) {
                fc->no_copy_file_range = 1;
index 89bdc41..835c067 100644 (file)
@@ -287,20 +287,13 @@ struct fuse_page_desc {
 };
 
 struct fuse_args {
-       struct {
-               struct {
-                       uint32_t opcode;
-                       uint64_t nodeid;
-               } h;
-               unsigned numargs;
-               struct fuse_in_arg args[3];
-
-       } in;
-       struct {
-               unsigned argvar:1;
-               unsigned numargs;
-               struct fuse_arg args[2];
-       } out;
+       uint32_t opcode;
+       uint64_t nodeid;
+       unsigned int in_numargs;
+       struct fuse_in_arg in_args[3];
+       unsigned int out_argvar:1;
+       unsigned int out_numargs;
+       struct fuse_arg out_args[2];
 };
 
 #define FUSE_ARGS(args) struct fuse_args args = {}
index 9ae9fdd..4eaea0b 100644 (file)
@@ -437,12 +437,12 @@ static int fuse_statfs(struct dentry *dentry, struct kstatfs *buf)
        }
 
        memset(&outarg, 0, sizeof(outarg));
-       args.in.numargs = 0;
-       args.in.h.opcode = FUSE_STATFS;
-       args.in.h.nodeid = get_node_id(d_inode(dentry));
-       args.out.numargs = 1;
-       args.out.args[0].size = sizeof(outarg);
-       args.out.args[0].value = &outarg;
+       args.in_numargs = 0;
+       args.opcode = FUSE_STATFS;
+       args.nodeid = get_node_id(d_inode(dentry));
+       args.out_numargs = 1;
+       args.out_args[0].size = sizeof(outarg);
+       args.out_args[0].value = &outarg;
        err = fuse_simple_request(fc, &args);
        if (!err)
                convert_fuse_statfs(buf, &outarg.st);
index 4337176..2e02486 100644 (file)
@@ -25,15 +25,15 @@ int fuse_setxattr(struct inode *inode, const char *name, const void *value,
        memset(&inarg, 0, sizeof(inarg));
        inarg.size = size;
        inarg.flags = flags;
-       args.in.h.opcode = FUSE_SETXATTR;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 3;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = strlen(name) + 1;
-       args.in.args[1].value = name;
-       args.in.args[2].size = size;
-       args.in.args[2].value = value;
+       args.opcode = FUSE_SETXATTR;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 3;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = strlen(name) + 1;
+       args.in_args[1].value = name;
+       args.in_args[2].size = size;
+       args.in_args[2].value = value;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS) {
                fc->no_setxattr = 1;
@@ -60,22 +60,22 @@ ssize_t fuse_getxattr(struct inode *inode, const char *name, void *value,
 
        memset(&inarg, 0, sizeof(inarg));
        inarg.size = size;
-       args.in.h.opcode = FUSE_GETXATTR;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 2;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
-       args.in.args[1].size = strlen(name) + 1;
-       args.in.args[1].value = name;
+       args.opcode = FUSE_GETXATTR;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 2;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
+       args.in_args[1].size = strlen(name) + 1;
+       args.in_args[1].value = name;
        /* This is really two different operations rolled into one */
-       args.out.numargs = 1;
+       args.out_numargs = 1;
        if (size) {
-               args.out.argvar = 1;
-               args.out.args[0].size = size;
-               args.out.args[0].value = value;
+               args.out_argvar = 1;
+               args.out_args[0].size = size;
+               args.out_args[0].value = value;
        } else {
-               args.out.args[0].size = sizeof(outarg);
-               args.out.args[0].value = &outarg;
+               args.out_args[0].size = sizeof(outarg);
+               args.out_args[0].value = &outarg;
        }
        ret = fuse_simple_request(fc, &args);
        if (!ret && !size)
@@ -121,20 +121,20 @@ ssize_t fuse_listxattr(struct dentry *entry, char *list, size_t size)
 
        memset(&inarg, 0, sizeof(inarg));
        inarg.size = size;
-       args.in.h.opcode = FUSE_LISTXATTR;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = sizeof(inarg);
-       args.in.args[0].value = &inarg;
+       args.opcode = FUSE_LISTXATTR;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = sizeof(inarg);
+       args.in_args[0].value = &inarg;
        /* This is really two different operations rolled into one */
-       args.out.numargs = 1;
+       args.out_numargs = 1;
        if (size) {
-               args.out.argvar = 1;
-               args.out.args[0].size = size;
-               args.out.args[0].value = list;
+               args.out_argvar = 1;
+               args.out_args[0].size = size;
+               args.out_args[0].value = list;
        } else {
-               args.out.args[0].size = sizeof(outarg);
-               args.out.args[0].value = &outarg;
+               args.out_args[0].size = sizeof(outarg);
+               args.out_args[0].value = &outarg;
        }
        ret = fuse_simple_request(fc, &args);
        if (!ret && !size)
@@ -157,11 +157,11 @@ int fuse_removexattr(struct inode *inode, const char *name)
        if (fc->no_removexattr)
                return -EOPNOTSUPP;
 
-       args.in.h.opcode = FUSE_REMOVEXATTR;
-       args.in.h.nodeid = get_node_id(inode);
-       args.in.numargs = 1;
-       args.in.args[0].size = strlen(name) + 1;
-       args.in.args[0].value = name;
+       args.opcode = FUSE_REMOVEXATTR;
+       args.nodeid = get_node_id(inode);
+       args.in_numargs = 1;
+       args.in_args[0].size = strlen(name) + 1;
+       args.in_args[0].value = name;
        err = fuse_simple_request(fc, &args);
        if (err == -ENOSYS) {
                fc->no_removexattr = 1;