| #!/bin/bash |
| |
| TS_TOPDIR="${0%/*}/../.." |
| TS_DESC="umount" |
| |
| . $TS_TOPDIR/functions.sh |
| ts_init "$*" |
| |
| ts_check_test_command "$TS_CMD_FDISK" |
| ts_check_test_command "$TS_CMD_EJECT" |
| ts_check_test_command "$TS_CMD_MOUNT" |
| |
| ts_skip_nonroot |
| ts_check_prog "mkfs.ext2" |
| |
| # scsi_debug could not eject for kernel >=3.19 and <4.4 |
| if x=$(echo "3.19" && uname -r && echo "4.4") \ |
| && test "$x" = "$(echo "$x" | sort --version-sort)" |
| then |
| ts_skip "3.19 <= $(uname -sr) < 4.4" |
| fi |
| |
| # |
| # Note that eject --force is required because scsi_debug is |
| # not removable device. |
| # |
| |
| # set global variable TS_DEVICE |
| function init_device { |
| ts_scsi_debug_init dev_size_mb=100 |
| } |
| |
| function init_partitions { |
| local dev=$1 |
| |
| ts_log "Create partitions" |
| $TS_CMD_FDISK $dev >> /dev/null 2>&1 <<EOF |
| n |
| p |
| 1 |
| |
| +50M |
| n |
| p |
| 2 |
| |
| |
| p |
| w |
| EOF |
| udevadm settle |
| mkfs.ext2 -q ${dev}1 |
| mkfs.ext2 -q ${dev}2 |
| udevadm settle |
| } |
| |
| function deinit_device { |
| ts_scsi_debug_rmmod |
| } |
| |
| |
| ts_init_subtest "by-disk" |
| init_device |
| $TS_CMD_EJECT --force $TS_DEVICE && ts_log "Success" |
| deinit_device |
| ts_finalize_subtest |
| |
| |
| ts_init_subtest "by-disk-mounted" |
| init_device |
| mkfs.ext2 -q -F $TS_DEVICE |
| udevadm settle |
| mkdir -p $TS_MOUNTPOINT |
| $TS_CMD_MOUNT $TS_DEVICE $TS_MOUNTPOINT |
| $TS_CMD_EJECT --force $TS_DEVICE && ts_log "Success" |
| deinit_device |
| ts_finalize_subtest |
| |
| |
| ts_init_subtest "by-disk-mounted-partition" |
| init_device |
| init_partitions $TS_DEVICE |
| mkdir -p ${TS_MOUNTPOINT}1 |
| mkdir -p ${TS_MOUNTPOINT}2 |
| $TS_CMD_MOUNT ${TS_DEVICE}1 ${TS_MOUNTPOINT}1 |
| $TS_CMD_MOUNT ${TS_DEVICE}2 ${TS_MOUNTPOINT}2 |
| $TS_CMD_EJECT --force $TS_DEVICE && ts_log "Success" |
| deinit_device |
| ts_finalize_subtest |
| |
| |
| ts_init_subtest "by-partition" |
| init_device |
| init_partitions $TS_DEVICE |
| $TS_CMD_EJECT --force ${TS_DEVICE}1 && ts_log "Success" |
| deinit_device |
| ts_finalize_subtest |
| |
| |
| ts_init_subtest "by-partition-mounted" |
| init_device |
| init_partitions $TS_DEVICE |
| mkdir -p ${TS_MOUNTPOINT}1 |
| mkdir -p ${TS_MOUNTPOINT}2 |
| $TS_CMD_MOUNT ${TS_DEVICE}1 ${TS_MOUNTPOINT}1 |
| $TS_CMD_MOUNT ${TS_DEVICE}2 ${TS_MOUNTPOINT}2 |
| $TS_CMD_EJECT --force ${TS_DEVICE}1 && ts_log "Success" |
| deinit_device |
| ts_finalize_subtest |
| |
| |
| ts_finalize |