Whamcloud - gitweb
LU-13431 llite: rework preferred IO size 76/38176/2
authorSebastien Buisson <sbuisson@ddn.com>
Tue, 7 Apr 2020 13:34:50 +0000 (13:34 +0000)
committerOleg Drokin <green@whamcloud.com>
Thu, 23 Apr 2020 16:49:19 +0000 (16:49 +0000)
Instead of using inode->i_blkbits to infer preferred IO size,
just set stat->blksize to the right value in ll_getattr_dentry().

Signed-off-by: Sebastien Buisson <sbuisson@ddn.com>
Change-Id: If705c7d52bdfabdd3e669ca2d34f8cc0ca1ae08a
Reviewed-on: https://review.whamcloud.com/38176
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Mike Pershin <mpershin@whamcloud.com>
lustre/llite/file.c
lustre/llite/llite_lib.c

index 58caaae..b140514 100644 (file)
@@ -4748,7 +4748,14 @@ int ll_getattr_dentry(struct dentry *de, struct kstat *stat)
        stat->atime = inode->i_atime;
        stat->mtime = inode->i_mtime;
        stat->ctime = inode->i_ctime;
-       stat->blksize = sbi->ll_stat_blksize ?: 1 << inode->i_blkbits;
+       /* stat->blksize is used to tell about preferred IO size */
+       if (sbi->ll_stat_blksize)
+               stat->blksize = sbi->ll_stat_blksize;
+       else if (S_ISREG(inode->i_mode))
+               stat->blksize = 1 << min(PTLRPC_MAX_BRW_BITS + 1,
+                                        LL_MAX_BLKSIZE_BITS);
+       else
+               stat->blksize = 1 << inode->i_sb->s_blocksize_bits;
 
        stat->nlink = inode->i_nlink;
        stat->size = i_size_read(inode);
index 5a56084..a632430 100644 (file)
@@ -2127,12 +2127,6 @@ int ll_update_inode(struct inode *inode, struct lustre_md *md)
                                (body->mbo_mode & S_IFMT);
 
        LASSERT(inode->i_mode != 0);
-       if (S_ISREG(inode->i_mode))
-               inode->i_blkbits = min(PTLRPC_MAX_BRW_BITS + 1,
-                                      LL_MAX_BLKSIZE_BITS);
-       else
-               inode->i_blkbits = inode->i_sb->s_blocksize_bits;
-
        if (body->mbo_valid & OBD_MD_FLUID)
                inode->i_uid = make_kuid(&init_user_ns, body->mbo_uid);
        if (body->mbo_valid & OBD_MD_FLGID)