[PATCH] fuse: add frsize to statfs reply
authorMiklos Szeredi <miklos@szeredi.hu>
Fri, 6 Jan 2006 08:19:37 +0000 (00:19 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 6 Jan 2006 16:33:55 +0000 (08:33 -0800)
Add 'frsize' member to the statfs reply.

I'm not sure if sending f_fsid will ever be needed, but just in case leave
some space at the end of the structure, so less compatibility mess would be
required.

Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/fuse/inode.c
include/linux/fuse.h

index e69a546844d0f23770f3dd5e690f20284a27cd01..3b928a02af04f71acd8e283e8f44cd8957708c05 100644 (file)
@@ -218,6 +218,7 @@ static void convert_fuse_statfs(struct kstatfs *stbuf, struct fuse_kstatfs *attr
 {
        stbuf->f_type    = FUSE_SUPER_MAGIC;
        stbuf->f_bsize   = attr->bsize;
+       stbuf->f_frsize  = attr->frsize;
        stbuf->f_blocks  = attr->blocks;
        stbuf->f_bfree   = attr->bfree;
        stbuf->f_bavail  = attr->bavail;
@@ -238,10 +239,12 @@ static int fuse_statfs(struct super_block *sb, struct kstatfs *buf)
        if (!req)
                return -EINTR;
 
+       memset(&outarg, 0, sizeof(outarg));
        req->in.numargs = 0;
        req->in.h.opcode = FUSE_STATFS;
        req->out.numargs = 1;
-       req->out.args[0].size = sizeof(outarg);
+       req->out.args[0].size =
+               fc->minor < 4 ? FUSE_COMPAT_STATFS_SIZE : sizeof(outarg);
        req->out.args[0].value = &outarg;
        request_send(fc, req);
        err = req->out.h.error;
index 3c85f1a422cc93b885456541278bd052914f0b24..9d5177c356cc915701ff0e638645bc4abe45d52a 100644 (file)
@@ -53,6 +53,9 @@ struct fuse_kstatfs {
        __u64   ffree;
        __u32   bsize;
        __u32   namelen;
+       __u32   frsize;
+       __u32   padding;
+       __u32   spare[6];
 };
 
 #define FATTR_MODE     (1 << 0)
@@ -213,6 +216,8 @@ struct fuse_write_out {
        __u32   padding;
 };
 
+#define FUSE_COMPAT_STATFS_SIZE 48
+
 struct fuse_statfs_out {
        struct fuse_kstatfs st;
 };