From: Niu Yawei Date: Tue, 10 May 2016 03:30:24 +0000 (-0400) Subject: LU-8998 utils: enlarge default inode size X-Git-Tag: 2.9.56~46^2~11 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=b6dfd13e1d0ca4d280777cd0a30a78a63d49eda9 LU-8998 utils: enlarge default inode size Composite layout consumes more EA space, to hold a typical 3 components composite layout in inode, the default inode size on MDT needs be bumped from 512 bytes to 1024 bytes. The default OST inode size is changed from 256 bytes to 512 bytes as well, because there will be more composite layout information stored in OST object EA. Performance tests shows that increased default inode size doesn't impact performance, following are few numbers from the mdtest result: create stat removal tree-create tree-remove 512/256 (origin): 16543 47292 32826 48 22 1024/512 (new) : 16903 47404 32114 55 20 Signed-off-by: Niu Yawei Change-Id: Ic5c08fd514f1111343f11129b1503a5ba2265ec7 Reviewed-on: https://review.whamcloud.com/24873 Reviewed-by: Andreas Dilger Tested-by: Jenkins Tested-by: Maloo --- diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh index 2c72876..9d28eaf 100755 --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -6075,11 +6075,11 @@ test_86() { run_test 86 "Replacing mkfs.lustre -G option" test_87() { #LU-6544 - [[ $(lustre_version_code $SINGLEMDS1) -ge $(version_code 2.7.56) ]] || - { skip "Need MDS version at least 2.7.56" && return; } + [[ $(lustre_version_code $SINGLEMDS1) -ge $(version_code 2.9.51) ]] || + { skip "Need MDS version at least 2.9.51" && return; } [[ $(facet_fstype $SINGLEMDS) != ldiskfs ]] && { skip "Only applicable to ldiskfs-based MDTs" && return; } - [[ $OSTCOUNT -gt 69 ]] && + [[ $OSTCOUNT -gt 59 ]] && { skip "Ignore wide striping situation" && return; } local mdsdev=$(mdsdevname 1) @@ -6087,23 +6087,22 @@ test_87() { #LU-6544 local file=$DIR/$tfile local mntpt=$(facet_mntpt $SINGLEMDS) local used_xattr_blk=0 - local inode_size=${1:-512} + local inode_size=${1:-1024} local left_size=0 local xtest="trusted.test" local value local orig local i + local stripe_cnt=$(($OSTCOUNT + 2)) - #Please see LU-6544 for MDT inode size calculation - if [ $OSTCOUNT -gt 26 ]; then + #Please see ldiskfs_make_lustre() for MDT inode size calculation + if [ $stripe_cnt -gt 16 ]; then inode_size=2048 - elif [ $OSTCOUNT -gt 5 ]; then - inode_size=1024 fi left_size=$(expr $inode_size - \ 156 - \ 32 - \ - 32 - $OSTCOUNT \* 24 - 16 - 3 - \ + 32 - 40 \* 3 - 32 \* 3 - $stripe_cnt \* 24 - 16 - 3 - \ 24 - 16 - 3 - \ 24 - 18 - $(expr length $tfile) - 16 - 4) if [ $left_size -le 0 ]; then @@ -6117,7 +6116,7 @@ test_87() { #LU-6544 unload_modules reformat - add mds1 $(mkfs_opts mds1 ${mdsdev}) --stripe-count-hint=$OSTCOUNT \ + add mds1 $(mkfs_opts mds1 ${mdsdev}) --stripe-count-hint=$stripe_cnt \ --reformat $mdsdev $mdsvdev || error "add mds1 failed" start_mdt 1 > /dev/null || error "start mdt1 failed" for i in $(seq $OSTCOUNT); do @@ -6128,9 +6127,9 @@ test_87() { #LU-6544 check_mount || error "check client $MOUNT failed" #set xattr - $SETSTRIPE -c -1 $file || error "$SETSTRIPE -c -1 $file failed" - $GETSTRIPE $file || error "$GETSTRIPE $file failed" - i=$($GETSTRIPE -c $file) + $SETSTRIPE -E 1M -c 1 -E 64M -c 1 -E -1 -c -1 $file || + error "Create file with 3 components failed" + i=$($GETSTRIPE -I 3 -c $file) if [ $i -ne $OSTCOUNT ]; then left_size=$(expr $left_size + $(expr $OSTCOUNT - $i) \* 24) echo -n "Since only $i out $OSTCOUNT OSTs are used, " diff --git a/lustre/utils/mount_utils_ldiskfs.c b/lustre/utils/mount_utils_ldiskfs.c index 6a047be..4092eca 100644 --- a/lustre/utils/mount_utils_ldiskfs.c +++ b/lustre/utils/mount_utils_ldiskfs.c @@ -756,11 +756,17 @@ int ldiskfs_make_lustre(struct mkfs_opts *mop) } } - /* Inode size includes: + /* + * The inode size is constituted by following elements + * (assuming all files are in composite layout and has + * 3 components): + * * ldiskfs inode size: 156 * extended attributes size, including: * ext4_xattr_header: 32 - * LOV EA size: 32(lov_mds_md) + + * LOV EA size: 32(lov_comp_md_v1) + + * 3 * 40(lov_comp_md_entry_v1) + + * 3 * 32(lov_mds_md) + * stripes * 24(lov_ost_data) + * 16(xattr_entry) + 3(lov) * LMA EA size: 24(lustre_mdt_attrs) + @@ -771,24 +777,22 @@ int ldiskfs_make_lustre(struct mkfs_opts *mop) * * If we say the average filename length is about 32 bytes, * the calculation looks like: - * 156 + 32 + (32+24*N+19) + (24+19) + (24+18+~32+20) + other <= - * 512*2^m, {m=0,1,2,3} + * 156 + 32 + (32+3*(40 + 32)+24*N+19) + (24+19) + + * (24+18+~32+20) + other <= 512*2^m, {m=0,1,2,3} */ if (strstr(mop->mo_mkfsopts, "-I") == NULL) { if (IS_MDT(&mop->mo_ldd)) { - if (mop->mo_stripe_count > 69) + if (mop->mo_stripe_count > 59) inode_size = 512; /* bz 7241 */ /* see also "-i" below for EA blocks */ - else if (mop->mo_stripe_count > 26) + else if (mop->mo_stripe_count > 16) inode_size = 2048; - else if (mop->mo_stripe_count > 5) - inode_size = 1024; else - inode_size = 512; + inode_size = 1024; } else if (IS_OST(&mop->mo_ldd)) { - /* We store MDS FID and OST objid in EA on OST - * we need to make inode bigger as well. */ - inode_size = 256; + /* We store MDS FID and necessary composite + * layout information in the OST object EA. */ + inode_size = 512; } if (inode_size > 0) { @@ -811,7 +815,7 @@ int ldiskfs_make_lustre(struct mkfs_opts *mop) if (IS_MDT(&mop->mo_ldd)) { bytes_per_inode = inode_size + 1536; - if (mop->mo_stripe_count > 69) { + if (mop->mo_stripe_count > 59) { int extra = mop->mo_stripe_count * 24; extra = ((extra - 1) | 4095) + 1; bytes_per_inode += extra;