#!/bin/bash # Copyright (C) 2010 Karel Zak TS_TOPDIR="${0%/*}/../.." TS_DESC="context-py (utab)" . $TS_TOPDIR/functions.sh ts_init "$*" ts_check_test_command "$TS_CMD_FDISK" ts_check_test_command "$TS_CMD_FINDMNT" ts_check_test_command "$TS_CMD_WIPEFS" ts_check_test_command "$TS_CMD_UUIDGEN" ts_check_prog "mkfs.ext4" ts_init_py libmount ts_skip_nonroot TESTPROG="$TS_HELPER_PYLIBMOUNT_CONTEXT" [ -x $TESTPROG ] || ts_die "test script missing" LABEL=libmount-test UUID=$($TS_CMD_UUIDGEN) MOUNTPOINT="$TS_MOUNTPOINT" # set global variable TS_DEVICE ts_scsi_debug_init dev_size_mb=100 DEVNAME=$(basename $TS_DEVICE) ts_log "Create partitions" $TS_CMD_FDISK ${TS_DEVICE} &> /dev/null < /dev/null ts_log "Do tests..." export LIBMOUNT_MTAB=$TS_OUTPUT.mtab rm -f $LIBMOUNT_MTAB ln -s /proc/mounts $LIBMOUNT_MTAB export LIBMOUNT_UTAB=$TS_OUTPUT.utab rm -f $LIBMOUNT_UTAB > $LIBMOUNT_UTAB udevadm settle ts_init_subtest "mount-by-devname" mkdir -p $MOUNTPOINT &> /dev/null $PYTHON $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1 grep -q $DEVICE /proc/mounts || \ echo "(by device) cannot find $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1 ts_finalize_subtest ts_init_subtest "umount-by-devname" $PYTHON $TESTPROG --umount $DEVICE >> $TS_OUTPUT 2>&1 grep -q $DEVICE /proc/mounts && echo "umount (device) failed: found $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1 ts_finalize_subtest ts_init_subtest "mount-uhelper" mkdir -p $MOUNTPOINT &> /dev/null $PYTHON $TESTPROG --mount -o uhelper=foo,rw LABEL="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>&1 grep -q $DEVICE $LIBMOUNT_UTAB || \ echo "(by label) cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1 ts_finalize_subtest ts_init_subtest "umount" $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1 grep -q $DEVICE $LIBMOUNT_UTAB && \ echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1 ts_finalize_subtest if [ -x "/sbin/mkfs.btrfs" ]; then $TS_CMD_WIPEFS -a $DEVICE &> /dev/null ts_log "Create filesystem [btrfs]" mkfs.btrfs -L "$LABEL" $DEVICE &> /dev/null udevadm settle mount -t btrfs $DEVICE $MOUNTPOINT &> /dev/null btrfs subvolume create $MOUNTPOINT/sub &> /dev/null umount $MOUNTPOINT &> /dev/null udevadm settle ts_init_subtest "mount-uhelper-subvol" mkdir -p $MOUNTPOINT &> /dev/null $PYTHON $TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1 grep -q $DEVICE $LIBMOUNT_UTAB || \ echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1 ts_finalize_subtest ts_log "All mount options (btrfs subvolume + utab) ---" $TS_CMD_FINDMNT --mtab $MOUNTPOINT -o OPTIONS -n >> $TS_OUTPUT 2>&1 ts_log "---" ts_init_subtest "umount-subvol" $PYTHON $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1 grep -q $DEVICE $LIBMOUNT_UTAB && \ echo "umount (mountpoint) failed: found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1 ts_finalize_subtest fi ts_log "...done." rmmod scsi_debug ts_finalize