xref: /spdk/scripts/vagrant/create_nvme_img.sh (revision 06b537bfdb4393dea857e204b85d8df46a351d8a)
1#!/usr/bin/env bash
2SYSTEM=$(uname -s)
3size="1024M"
4nvme_disk="/var/lib/libvirt/images/nvme_disk.img"
5type="nvme"
6
7function usage() {
8	echo "Usage: ${0##*/} [-s <disk_size>] [-n <backing file name>]"
9	echo "-s <disk_size> with postfix e.g. 2G        default: 1024M"
10	echo "                                    for OCSSD default: 9G"
11	echo "-n <backing file name>        backing file path with name"
12	echo "           default: /var/lib/libvirt/images/nvme_disk.img"
13	echo "-t <type>                  default: nvme available: ocssd"
14}
15
16while getopts "s:n:t:h-:" opt; do
17	case "${opt}" in
18		-)
19			echo "  Invalid argument: $OPTARG"
20			usage
21			exit 1
22			;;
23		s)
24			size=$OPTARG
25			;;
26		n)
27			nvme_disk=$OPTARG
28			;;
29		t)
30			type=$OPTARG
31			;;
32		h)
33			usage
34			exit 0
35			;;
36		*)
37			echo "  Invalid argument: $OPTARG"
38			usage
39			exit 1
40			;;
41	esac
42done
43
44if [ ! "${SYSTEM}" = "FreeBSD" ]; then
45	WHICH_OS=$(lsb_release -i | awk '{print $3}')
46	case $type in
47		"nvme")
48			qemu-img create -f raw $nvme_disk $size
49			;;
50		"ocssd")
51			if [ $size == "1024M" ]; then
52				size="9G"
53			fi
54			fallocate -l $size $nvme_disk
55			touch ${nvme_disk}_ocssd_md
56			;;
57		*)
58			echo "We support only nvme and ocssd disks types"
59			exit 1
60			;;
61	esac
62	#Change SE Policy on Fedora
63	if [ $WHICH_OS == "Fedora" ]; then
64		sudo chcon -t svirt_image_t $nvme_disk
65	fi
66
67	chmod 777 $nvme_disk
68	if [ $WHICH_OS == "Fedora" ]; then
69		chown qemu:qemu $nvme_disk
70	elif [ $WHICH_OS == "Ubuntu" ]; then
71		chown libvirt-qemu:kvm $nvme_disk
72	else
73		# That's just a wild guess for now
74		# TODO: needs improvement for other distros
75		chown libvirt-qemu:kvm $nvme_disk
76	fi
77fi
78