From cc215f2c8685cebbde4d2e6948178c99e4e95f15 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Thu, 10 May 2012 19:49:38 +0400 Subject: [PATCH] --- yaml --- r: 310481 b: refs/heads/master c: 203627bbc90377c509e32450c67c5d957ba2d989 h: refs/heads/master i: 310479: 170fd6a43e774871d96556b4f4320464981f4fc6 v: v3 --- [refs] | 2 +- trunk/fs/fuse/dir.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 619a7a3f8bf9..587e71298f6d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 45c72cd73c788dd18c8113d4a404d6b4a01decf1 +refs/heads/master: 203627bbc90377c509e32450c67c5d957ba2d989 diff --git a/trunk/fs/fuse/dir.c b/trunk/fs/fuse/dir.c index bc438320cac5..334e0b18a014 100644 --- a/trunk/fs/fuse/dir.c +++ b/trunk/fs/fuse/dir.c @@ -775,6 +775,8 @@ static int fuse_link(struct dentry *entry, struct inode *newdir, static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr, struct kstat *stat) { + unsigned int blkbits; + stat->dev = inode->i_sb->s_dev; stat->ino = attr->ino; stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777); @@ -790,7 +792,13 @@ static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr, stat->ctime.tv_nsec = attr->ctimensec; stat->size = attr->size; stat->blocks = attr->blocks; - stat->blksize = (1 << inode->i_blkbits); + + if (attr->blksize != 0) + blkbits = ilog2(attr->blksize); + else + blkbits = inode->i_sb->s_blocksize_bits; + + stat->blksize = 1 << blkbits; } static int fuse_do_getattr(struct inode *inode, struct kstat *stat,