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