1#!/usr/bin/env bash 2 3set -x 4 5testdir=$(readlink -f $(dirname $0)) 6 7disk_name="vda" 8test_folder_name="readonly_test" 9test_file_name="some_test_file" 10 11function error() { 12 echo "===========" 13 echo -e "ERROR: $*" 14 echo "===========" 15 umount "$test_folder_name" 16 rm -rf "${testdir:?}/${test_folder_name:?}" 17 exit 1 18} 19 20if [[ ! -d "/sys/block/$disk_name" ]]; then 21 error "No vhost-blk disk found!" 22fi 23 24if (($(lsblk -r -n -o RO -d "/dev/$disk_name") == 0)); then 25 error "Vhost-blk disk is not set as readonly!" 26fi 27 28echo "INFO: Found vhost-blk disk with readonly flag" 29if [[ ! -b "/dev/${disk_name}1" ]]; then 30 error "Partition not found!" 31fi 32 33if ! mkdir $testdir/$test_folder_name; then 34 error "Failed to create test folder $test_folder_name" 35fi 36 37echo "INFO: Mounting partition" 38if ! mount /dev/$disk_name"1" $testdir/$test_folder_name; then 39 error "Failed to mount partition $disk_name""1" 40fi 41 42echo "INFO: Trying to create file on readonly disk" 43if truncate -s "200M" $test_folder_name/$test_file_name"_on_readonly"; then 44 error "Created a file on a readonly disk!" 45fi 46 47if [[ -f $test_folder_name/$test_file_name ]]; then 48 echo "INFO: Trying to delete previously created file" 49 if rm $test_folder_name/$test_file_name; then 50 error "Deleted a file from a readonly disk!" 51 fi 52else 53 error "Previously created file not found!" 54fi 55 56echo "INFO: Copying file from readonly disk" 57cp $test_folder_name/$test_file_name $testdir 58if ! rm $testdir/$test_file_name; then 59 error "Copied file from a readonly disk was not found!" 60fi 61 62umount "$test_folder_name" 63rm -rf "${testdir:?}/${test_folder_name:?}" 64echo "INFO: Trying to create file system on a readonly disk" 65if mkfs.ext4 -F /dev/$disk_name"1"; then 66 error "Created file system on a readonly disk!" 67fi 68 69echo "INFO: Trying to delete partition from readonly disk" 70if echo -e "d\n1\nw" | fdisk /dev/$disk_name; then 71 error "Deleted partition from readonly disk!" 72fi 73