From 37a5dc89ffa43f70aabc57828edcce57e051d37c Mon Sep 17 00:00:00 2001 From: Sebastien Buisson Date: Tue, 7 Apr 2020 13:34:50 +0000 Subject: [PATCH] LU-13431 llite: rework preferred IO size 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 Change-Id: If705c7d52bdfabdd3e669ca2d34f8cc0ca1ae08a Reviewed-on: https://review.whamcloud.com/38176 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Mike Pershin --- lustre/llite/file.c | 9 ++++++++- lustre/llite/llite_lib.c | 6 ------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 58caaae..b140514 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -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); diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index 5a56084..a632430 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -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) -- 1.8.3.1