xref: /spdk/scripts/vagrant/create_nvme_img.sh (revision 099bdaf3b5279bca62858c8e68e3d0cd331cb9ad)
1#!/usr/bin/env bash
2#  SPDX-License-Identifier: BSD-3-Clause
3#  Copyright (C) 2017 Intel Corporation
4#  All rights reserved.
5#
6SYSTEM=$(uname -s)
7size="1024M"
8nvme_disk="/var/lib/libvirt/images/nvme_disk.img"
9preallocation="falloc"
10
11function usage() {
12	echo "Usage: ${0##*/} [-s <disk_size>] [-n <backing file name>]"
13	echo "-s <disk_size> with postfix e.g. 2G        default: 1024M"
14	echo "                                    for OCSSD default: 9G"
15	echo "-n <backing file name>        backing file path with name"
16	echo "           default: /var/lib/libvirt/images/nvme_disk.img"
17	echo "-p <mode>              allowed values:[off, falloc, full]"
18	echo "                                          default: falloc"
19}
20
21while getopts "s:n:p:t:h-:" opt; do
22	case "${opt}" in
23		-)
24			echo "  Invalid argument: $OPTARG"
25			usage
26			exit 1
27			;;
28		s)
29			size=$OPTARG
30			;;
31		n)
32			nvme_disk=$OPTARG
33			;;
34		p)
35			preallocation=$OPTARG
36			;;
37		h)
38			usage
39			exit 0
40			;;
41		*)
42			echo "  Invalid argument: $OPTARG"
43			usage
44			exit 1
45			;;
46	esac
47done
48
49if [ "${SYSTEM}" != "Linux" ]; then
50	echo "This script supports only Linux OS" >&2
51	exit 2
52fi
53
54source /etc/os-release
55qemu-img create -f raw "$nvme_disk" -o preallocation="$preallocation" $size
56
57# That's just a wild guess for now
58# TODO: needs improvement for other distros
59qemu_user_group="libvirt-qemu:kvm"
60
61case "$ID" in
62	"fedora")
63		qemu_user_group="qemu:qemu"
64
65		# Change SE Policy
66		sudo chcon -t svirt_image_t "$nvme_disk"
67		;;
68esac
69
70chmod 777 "$nvme_disk"
71chown $qemu_user_group "$nvme_disk"
72