prepare_lvm.sh 1.8 KB

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