#!/bin/bash
# SPDX-License-Identifier: GPL-3.0+
# Copyright (C) 2023 Ming Lei
#
# ublk_drv helper functions.

. common/shellcheck

_have_ublk() {
	_have_driver ublk_drv
	_have_src_program miniublk
}

_remove_ublk_devices() {
	src/miniublk del -a
}

_get_ublk_dev_state() {
	src/miniublk list -n "$1" | grep "state" | awk '{print $11}'
}

_get_ublk_daemon_pid() {
	src/miniublk list -n "$1" | grep "pid" | awk '{print $7}'
}

_init_ublk() {
	_remove_ublk_devices > /dev/null 2>&1

	modprobe -rq ublk_drv
	if ! modprobe ublk_drv; then
		SKIP_REASONS+=("requires ublk_drv")
		return 1
	fi

	udevadm settle
	return 0
}

_exit_ublk() {
	_remove_ublk_devices
	udevadm settle
	modprobe -r -q ublk_drv
}
