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