-# check for available inode, reduce to fit
-inode_per_thr=$((dir_count * file_count))
-require_inode=$((inode_per_thr * thrhi * 11/10))
-avail_inode=$($LFS df -i $MOUNT | grep "filesystem summary:" | \
- awk '{print $5}')
-
-while [ $require_inode -ge $avail_inode ]; do
- echo "Require $require_inode inode to run, only have $avail_inode"
- # reduce 20%
- file_count=$((file_count * 8 / 10))
- inode_per_thr=$((dir_count * file_count))
- require_inode=$((inode_per_thr * thrhi * 11 / 10))
-done
-
-if [ $require_inode -eq 0 ]; then
- skip_env "Not enough inode to run" && exit
-fi
+adjust_inode() {
+ local require_inode=0
+ local avail_mdt_inode=0
+ local avail_ost_inode=0
+
+ require_inode=$((file_count * thrhi))
+ # get available inode for mdt
+ avail_mdt_inode=$($LFS df -i $MOUNT | grep "filesystem summary:" | \
+ awk '{print $5}')
+ avail_mdt_inode=$((avail_mdt_inode * 9 / 10))
+
+ # get available inode for ost
+ for i in $($LFS df -i | grep ${FSNAME}-OST | awk '{print $4}'); do
+ avail_ost_inode=$((avail_ost_inode + i))
+ done
+ avail_ost_inode=$((avail_ost_inode * 9 / 10))
+
+ ((require_inode > avail_mdt_inode)) && require_inode=$avail_mdt_inode
+ ((require_inode > avail_ost_inode)) && require_inode=$avail_ost_inode
+
+ if ((require_inode == 0)); then
+ error "Fail to get the inode count"
+ fi
+ # convert it back to per thread inode
+ require_inode=$((require_inode / thrhi))
+
+ echo $require_inode
+}
+