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)
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
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
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, "
}
}
- /* 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) +
*
* 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) {
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;