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