1f08c3bdfSopenharmony_ci#!/bin/sh 2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later 3f08c3bdfSopenharmony_ci# Copyright (c) 2020 SUSE LLC <mdoucha@suse.cz> 4f08c3bdfSopenharmony_ci# 5f08c3bdfSopenharmony_ci# Create and mount LVM volume groups for lvm.local runfile 6f08c3bdfSopenharmony_ci 7f08c3bdfSopenharmony_ciTST_TESTFUNC=prepare_lvm 8f08c3bdfSopenharmony_ciTST_NEEDS_ROOT=1 9f08c3bdfSopenharmony_ciTST_NEEDS_CMDS="mount pvcreate vgcreate lvcreate" 10f08c3bdfSopenharmony_ci 11f08c3bdfSopenharmony_ciLVM_DIR="${LVM_DIR:-/tmp}" 12f08c3bdfSopenharmony_ciLVM_TMPDIR="$LVM_DIR/ltp/growfiles" 13f08c3bdfSopenharmony_ciLVM_IMGDIR="$LVM_DIR/ltp/imgfiles" 14f08c3bdfSopenharmony_ci 15f08c3bdfSopenharmony_cierror_check() 16f08c3bdfSopenharmony_ci{ 17f08c3bdfSopenharmony_ci if [ $? -ne 0 ]; then 18f08c3bdfSopenharmony_ci tst_brk TBROK "LVM setup failed" 19f08c3bdfSopenharmony_ci fi 20f08c3bdfSopenharmony_ci} 21f08c3bdfSopenharmony_ci 22f08c3bdfSopenharmony_cicreate_volume() 23f08c3bdfSopenharmony_ci{ 24f08c3bdfSopenharmony_ci fsname=$2 25f08c3bdfSopenharmony_ci ROD mkdir -p $fsname 26f08c3bdfSopenharmony_ci 27f08c3bdfSopenharmony_ci # If the FS isn't supported, only create the mountpoint and exit 28f08c3bdfSopenharmony_ci if ! tst_supported_fs $fsname; then 29f08c3bdfSopenharmony_ci return 30f08c3bdfSopenharmony_ci fi 31f08c3bdfSopenharmony_ci 32f08c3bdfSopenharmony_ci vgname=$1 33f08c3bdfSopenharmony_ci lvname="ltp_lv_$fsname" 34f08c3bdfSopenharmony_ci lvdev="/dev/$vgname/$lvname" 35f08c3bdfSopenharmony_ci 36f08c3bdfSopenharmony_ci ROD lvcreate -L 1G $vgname -n "$lvname" 37f08c3bdfSopenharmony_ci tst_mkfs $fsname "$lvdev" 38f08c3bdfSopenharmony_ci ROD mount "$lvdev" $fsname 39f08c3bdfSopenharmony_ci} 40f08c3bdfSopenharmony_ci 41f08c3bdfSopenharmony_ciprepare_mounts() 42f08c3bdfSopenharmony_ci{ 43f08c3bdfSopenharmony_ci FSNAME1=$1 44f08c3bdfSopenharmony_ci FSNAME2=$2 45f08c3bdfSopenharmony_ci shift 2 46f08c3bdfSopenharmony_ci LVM_DEV1=`tst_device acquire 1040 "$LVM_IMGDIR/lvm_pv1.img"` 47f08c3bdfSopenharmony_ci error_check 48f08c3bdfSopenharmony_ci LVM_DEV2=`tst_device acquire 1040 "$LVM_IMGDIR/lvm_pv2.img"` 49f08c3bdfSopenharmony_ci error_check 50f08c3bdfSopenharmony_ci 51f08c3bdfSopenharmony_ci # DEVSIZE=($# * 1GB / 2) + 16MB. The extra 16MB is for LVM physical 52f08c3bdfSopenharmony_ci # volume headers 53f08c3bdfSopenharmony_ci DEVSIZE=$(( $# * 512 + 16 )) 54f08c3bdfSopenharmony_ci LVM_DEV3=`tst_device acquire $DEVSIZE "$LVM_IMGDIR/lvm_pv3.img"` 55f08c3bdfSopenharmony_ci error_check 56f08c3bdfSopenharmony_ci LVM_DEV4=`tst_device acquire $DEVSIZE "$LVM_IMGDIR/lvm_pv4.img"` 57f08c3bdfSopenharmony_ci error_check 58f08c3bdfSopenharmony_ci ROD pvcreate $LVM_DEV1 $LVM_DEV2 $LVM_DEV3 $LVM_DEV4 59f08c3bdfSopenharmony_ci ROD vgcreate ltp_test_vg1 $LVM_DEV1 $LVM_DEV2 60f08c3bdfSopenharmony_ci ROD vgcreate ltp_test_vg2 $LVM_DEV3 $LVM_DEV4 61f08c3bdfSopenharmony_ci 62f08c3bdfSopenharmony_ci for fsname in $FSNAME1 $FSNAME2; do 63f08c3bdfSopenharmony_ci create_volume ltp_test_vg1 $fsname 64f08c3bdfSopenharmony_ci done 65f08c3bdfSopenharmony_ci 66f08c3bdfSopenharmony_ci for fsname in $@; do 67f08c3bdfSopenharmony_ci create_volume ltp_test_vg2 $fsname 68f08c3bdfSopenharmony_ci done 69f08c3bdfSopenharmony_ci} 70f08c3bdfSopenharmony_ci 71f08c3bdfSopenharmony_ciprepare_lvm() 72f08c3bdfSopenharmony_ci{ 73f08c3bdfSopenharmony_ci FS_LIST=$(tst_supported_fs -s tmpfs | sort -u) 74f08c3bdfSopenharmony_ci ROD mkdir -p "$LVM_TMPDIR" 75f08c3bdfSopenharmony_ci ROD mkdir -p "$LVM_IMGDIR" 76f08c3bdfSopenharmony_ci chmod 777 "$LVM_TMPDIR" 77f08c3bdfSopenharmony_ci cd "$LVM_TMPDIR" 78f08c3bdfSopenharmony_ci error_check 79f08c3bdfSopenharmony_ci prepare_mounts $FS_LIST 80f08c3bdfSopenharmony_ci tst_res TPASS "LVM mounts are ready" 81f08c3bdfSopenharmony_ci} 82f08c3bdfSopenharmony_ci 83f08c3bdfSopenharmony_ci. tst_test.sh 84f08c3bdfSopenharmony_citst_run 85