summaryrefslogtreecommitdiffstats
path: root/tests/ts/mount
diff options
context:
space:
mode:
authorKarel Zak2013-01-15 14:25:23 +0100
committerKarel Zak2013-01-15 14:25:23 +0100
commita3ab5f52cef15d2af0c84283abfba143759d61e6 (patch)
tree8c617481400c2e96c53593a182b89bba4b087db4 /tests/ts/mount
parentmount: support multiple MS_PROPAGATION flags in one mount(8) exec (diff)
downloadkernel-qcow2-util-linux-a3ab5f52cef15d2af0c84283abfba143759d61e6.tar.gz
kernel-qcow2-util-linux-a3ab5f52cef15d2af0c84283abfba143759d61e6.tar.xz
kernel-qcow2-util-linux-a3ab5f52cef15d2af0c84283abfba143759d61e6.zip
tests: add/improve mount shared-subtree tests
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'tests/ts/mount')
-rwxr-xr-xtests/ts/mount/shared-subtree61
1 files changed, 42 insertions, 19 deletions
diff --git a/tests/ts/mount/shared-subtree b/tests/ts/mount/shared-subtree
index a0a76c549..3eae9b7ca 100755
--- a/tests/ts/mount/shared-subtree
+++ b/tests/ts/mount/shared-subtree
@@ -7,19 +7,6 @@ TS_DESC="shared-subtree"
ts_init "$*"
ts_skip_nonroot
-function get_attr()
-{
- # It's usually stupid idea to use 'grep | awk',
- # but use paths in awk /regex/ is too tricky...
- #
- # TODO; improve libmount and findmnt to return the
- # shared-subtree flags
- #
- echo $(grep "$1" /proc/self/mountinfo | \
- awk '{print $7}' | \
- awk -F ':' '{ print $1 }')
-}
-
[ -d $TS_MOUNTPOINT ] || mkdir -p $TS_MOUNTPOINT
# bind
@@ -35,23 +22,59 @@ MOUNTPOINT="$TS_MOUNTPOINT"
ts_init_subtest "make-shared"
$TS_CMD_MOUNT --make-shared $MOUNTPOINT >> $TS_OUTPUT 2>&1
-echo "$(get_attr $MOUNTPOINT)" >> $TS_OUTPUT
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
ts_finalize_subtest
ts_init_subtest "make-private"
$TS_CMD_MOUNT --make-private $MOUNTPOINT >> $TS_OUTPUT 2>&1
-echo "$(get_attr $MOUNTPOINT)" >> $TS_OUTPUT
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
ts_finalize_subtest
+
ts_init_subtest "make-unbindable"
$TS_CMD_MOUNT --make-unbindable $MOUNTPOINT >> $TS_OUTPUT 2>&1
-echo "$(get_attr $MOUNTPOINT)" >> $TS_OUTPUT
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
ts_finalize_subtest
-
# clean up
-$TS_CMD_UMOUNT $TS_MOUNTPOINT
-rmdir $TS_MOUNTPOINT
+$TS_CMD_UMOUNT $MOUNTPOINT
+
+
+ts_init_subtest "bind-shared"
+$TS_CMD_MOUNT --make-shared \
+ --bind $MOUNTPOINT $MOUNTPOINT >> $TS_OUTPUT 2>&1
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
+$TS_CMD_UMOUNT $MOUNTPOINT
+ts_finalize_subtest
+
+
+#
+# block dev based mounts
+#
+DEVICE=$(ts_device_init)
+[ "$?" == 0 ] || ts_die "Cannot init device"
+
+mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" $DEVICE
+ts_device_has "TYPE" "ext3" $DEVICE || ts_die "Cannot find ext3 on $DEVICE" $DEVICE
+
+
+ts_init_subtest "mount-private"
+$TS_CMD_MOUNT --make-private --make-unbindable \
+ $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
+$TS_CMD_UMOUNT $MOUNTPOINT
+ts_finalize_subtest
+
+ts_init_subtest "mount-private-ro"
+$TS_CMD_MOUNT $DEVICE $MOUNTPOINT -o ro,private >> $TS_OUTPUT 2>&1
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o PROPAGATION >> $TS_OUTPUT
+$TS_CMD_FINDMNT -nr --target $MOUNTPOINT -o VFS-OPTIONS >> $TS_OUTPUT
+$TS_CMD_UMOUNT $MOUNTPOINT
+ts_finalize_subtest
+
+
+ts_device_deinit $DEVICE
+rmdir $MOUNTPOINT
ts_log "Success"
ts_finalize