xref: /spdk/test/vhost/readonly/enabled_readonly_vm.sh (revision 7610bc38dcd479fae050161a4a586244be6e3f0f)
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