# # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # # Copyright (c) 2013, 2016 by Delphix. All rights reserved. # Copyright 2020 Joyent, Inc. # . $STF_SUITE/tests/functional/devices/devices.cfg . $STF_SUITE/include/libtest.shlib # # Create block file or charactor file according to parameter. # # $1 device file type # $2 file name # function create_dev_file { typeset filetype=$1 typeset filename=$2 # On illumos we need access to the root zpool to get the major/minor # numbers here. export __ZFS_POOL_EXCLUDE="" case $filetype in b) devtype=$(df -n / | awk '{print $3}') case $devtype in zfs) rootpool=$(df / | \ awk '{print $2}') rootpool=${rootpool#\(} rootpool=${rootpool%%/*} devstr=$(get_disklist $rootpool) devstr=$(echo "$devstr" | \ awk '{print $1}') [[ -z $devstr ]] && \ log_fail "Can not get block device file." devstr=/dev/dsk/${devstr} ;; ufs) # # Get the existing block device file in current system. # And bring out the first one. # devstr=$(df -lhF ufs | \ grep "^/dev/dsk" | \ awk '{print $1}') devstr=$(echo "$devstr" | \ awk '{print $1}') [[ -z $devstr ]] && \ log_fail "Can not get block device file." ;; *) log_unsupported "Unsupported fstype " \ "for / ($devtype)," \ "only ufs|zfs is supported." ;; esac # # Get the device file information. i.e: # /dev/dsk/c0t0d0s0: block special (28/768) # devstr=$(file $devstr) # # Bring out major and minor number. # major=${devstr##*\(} major=${major%%/*} minor=${devstr##*/} minor=${minor%\)} log_must mknod $filename b $major $minor ;; c) # # Create device file '/dev/null' # log_must mknod $filename c $(getmajor mm) 2 ;; *) log_fail "'$filetype' is wrong." ;; esac return 0 } function cleanup { log_must zfs set devices=on $TESTPOOL/$TESTFS log_must rm -f $TESTDIR/$TESTFILE1 log_must rm -f $TESTDIR/$TESTFILE2 log_must rm -f $TESTDIR/$TESTFILE1.out log_must rm -f $TESTDIR/$TESTFILE2.out }