1*533affcbSRobert Mustacchi#!/usr/bin/ksh
2*533affcbSRobert Mustacchi
3*533affcbSRobert Mustacchi#
4*533affcbSRobert Mustacchi# This file and its contents are supplied under the terms of the
5*533affcbSRobert Mustacchi# Common Development and Distribution License ("CDDL"), version 1.0.
6*533affcbSRobert Mustacchi# You may only use this file in accordance with the terms of version
7*533affcbSRobert Mustacchi# 1.0 of the CDDL.
8*533affcbSRobert Mustacchi#
9*533affcbSRobert Mustacchi# A full copy of the text of the CDDL should have accompanied this
10*533affcbSRobert Mustacchi# source.  A copy of the CDDL is also available via the Internet at
11*533affcbSRobert Mustacchi# http://www.illumos.org/license/CDDL.
12*533affcbSRobert Mustacchi#
13*533affcbSRobert Mustacchi
14*533affcbSRobert Mustacchi#
15*533affcbSRobert Mustacchi# Copyright 2024 Oxide Computer Company
16*533affcbSRobert Mustacchi#
17*533affcbSRobert Mustacchi
18*533affcbSRobert Mustacchi#
19*533affcbSRobert Mustacchi# Validate that the NVMe device in question is usable for these tests.
20*533affcbSRobert Mustacchi# What we care about is that namespace one is present.
21*533affcbSRobert Mustacchi#
22*533affcbSRobert Mustacchiexport LC_ALL=C.UTF-8
23*533affcbSRobert Mustacchiexport LD_PRELOAD=libumem.so
24*533affcbSRobert Mustacchiexport UMEM_DEBUG=default
25*533affcbSRobert Mustacchiunalias -a
26*533affcbSRobert Mustacchiset -o pipefail
27*533affcbSRobert Mustacchi
28*533affcbSRobert Mustacchind_arg0=$(basename $0)
29*533affcbSRobert Mustacchind_rundir="$(dirname $0)/../runfiles"
30*533affcbSRobert Mustacchind_file="non-destruct.run"
31*533affcbSRobert Mustacchind_runfile="$nd_rundir/$nd_file"
32*533affcbSRobert Mustacchind_runner="/opt/test-runner/bin/run"
33*533affcbSRobert Mustacchind_nvmeadm="/usr/sbin/nvmeadm"
34*533affcbSRobert Mustacchind_device=
35*533affcbSRobert Mustacchi
36*533affcbSRobert Mustacchifunction fatal
37*533affcbSRobert Mustacchi{
38*533affcbSRobert Mustacchi        typeset msg="$*"
39*533affcbSRobert Mustacchi        [[ -z "$msg" ]] && msg="failed"
40*533affcbSRobert Mustacchi        echo "$nd_arg0: $msg" >&2
41*533affcbSRobert Mustacchi        exit 1
42*533affcbSRobert Mustacchi
43*533affcbSRobert Mustacchi}
44*533affcbSRobert Mustacchi
45*533affcbSRobert Mustacchi#
46*533affcbSRobert Mustacchi# Check that the supplied device is an NVMe device that the system knows
47*533affcbSRobert Mustacchi# about and that it has basic features that we can use.
48*533affcbSRobert Mustacchi#
49*533affcbSRobert Mustacchifunction check_device
50*533affcbSRobert Mustacchi{
51*533affcbSRobert Mustacchi	typeset nn
52*533affcbSRobert Mustacchi
53*533affcbSRobert Mustacchi	if ! $nd_nvmeadm list "$nd_device" >/dev/null; then
54*533affcbSRobert Mustacchi		fatal "failed to find device $nd_device"
55*533affcbSRobert Mustacchi	fi
56*533affcbSRobert Mustacchi
57*533affcbSRobert Mustacchi	if ! $nd_nvmeadm list "$nd_device/1" >/dev/null; then
58*533affcbSRobert Mustacchi		fatal "failed to find namespace 1 on $nd_device"
59*533affcbSRobert Mustacchi	fi
60*533affcbSRobert Mustacchi}
61*533affcbSRobert Mustacchi
62*533affcbSRobert Mustacchi#
63*533affcbSRobert Mustacchi# Export the basic environment variables that the test programs expect
64*533affcbSRobert Mustacchi# to identify what to operate on.
65*533affcbSRobert Mustacchi#
66*533affcbSRobert Mustacchifunction setup_env
67*533affcbSRobert Mustacchi{
68*533affcbSRobert Mustacchi	export NVME_TEST_DEVICE=$nd_device
69*533affcbSRobert Mustacchi}
70*533affcbSRobert Mustacchi
71*533affcbSRobert Mustacchifunction run_tests
72*533affcbSRobert Mustacchi{
73*533affcbSRobert Mustacchi	$nd_runner -c "$nd_runfile"
74*533affcbSRobert Mustacchi}
75*533affcbSRobert Mustacchi
76*533affcbSRobert Mustacchiif (( $# == 0 )); then
77*533affcbSRobert Mustacchi	fatal "missing required device name"
78*533affcbSRobert Mustacchifi
79*533affcbSRobert Mustacchi
80*533affcbSRobert Mustacchind_device="$1"
81*533affcbSRobert Mustacchi
82*533affcbSRobert Mustacchicheck_device
83*533affcbSRobert Mustacchisetup_env
84*533affcbSRobert Mustacchirun_tests
85