summaryrefslogtreecommitdiffstats
path: root/src/spdk/scripts/vagrant/create_nvme_img.sh
blob: db758bd8797dc70b8e45dbf7a44301b829332b2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env bash
SYSTEM=$(uname -s)
size="1024M"
nvme_disk="/var/lib/libvirt/images/nvme_disk.img"
type="nvme"

function usage() {
	echo "Usage: ${0##*/} [-s <disk_size>] [-n <backing file name>]"
	echo "-s <disk_size> with postfix e.g. 2G        default: 1024M"
	echo "                                    for OCSSD default: 9G"
	echo "-n <backing file name>        backing file path with name"
	echo "           default: /var/lib/libvirt/images/nvme_disk.img"
	echo "-t <type>                  default: nvme available: ocssd"
}

while getopts "s:n:t:h-:" opt; do
	case "${opt}" in
		-)
			echo "  Invalid argument: $OPTARG"
			usage
			exit 1
			;;
		s)
			size=$OPTARG
			;;
		n)
			nvme_disk=$OPTARG
			;;
		t)
			type=$OPTARG
			;;
		h)
			usage
			exit 0
			;;
		*)
			echo "  Invalid argument: $OPTARG"
			usage
			exit 1
			;;
	esac
done

if [ ! "${SYSTEM}" = "FreeBSD" ]; then
	WHICH_OS=$(lsb_release -i | awk '{print $3}')
	case $type in
		"nvme")
			qemu-img create -f raw $nvme_disk $size
			;;
		"ocssd")
			if [ $size == "1024M" ]; then
				size="9G"
			fi
			fallocate -l $size $nvme_disk
			touch ${nvme_disk}_ocssd_md
			;;
		*)
			echo "We support only nvme and ocssd disks types"
			exit 1
			;;
	esac
	#Change SE Policy on Fedora
	if [ $WHICH_OS == "Fedora" ]; then
		sudo chcon -t svirt_image_t $nvme_disk
	fi

	chmod 777 $nvme_disk
	if [ $WHICH_OS == "Fedora" ]; then
		chown qemu:qemu $nvme_disk
	elif [ $WHICH_OS == "Ubuntu" ]; then
		chown libvirt-qemu:kvm $nvme_disk
	else
		# That's just a wild guess for now
		# TODO: needs improvement for other distros
		chown libvirt-qemu:kvm $nvme_disk
	fi
fi