summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/expected/mount/shared-subtree-bind-shared1
-rw-r--r--tests/expected/mount/shared-subtree-make-private2
-rw-r--r--tests/expected/mount/shared-subtree-make-unbindable2
-rw-r--r--tests/expected/mount/shared-subtree-mount-private1
-rw-r--r--tests/expected/mount/shared-subtree-mount-private-ro2
-rwxr-xr-xtests/ts/mount/shared-subtree61
6 files changed, 48 insertions, 21 deletions
diff --git a/tests/expected/mount/shared-subtree-bind-shared b/tests/expected/mount/shared-subtree-bind-shared
new file mode 100644
index 000000000..8a205e8dc
--- /dev/null
+++ b/tests/expected/mount/shared-subtree-bind-shared
@@ -0,0 +1 @@
+shared
diff --git a/tests/expected/mount/shared-subtree-make-private b/tests/expected/mount/shared-subtree-make-private
index 39cdd0ded..3e18ebf09 100644
--- a/tests/expected/mount/shared-subtree-make-private
+++ b/tests/expected/mount/shared-subtree-make-private
@@ -1 +1 @@
--
+private
diff --git a/tests/expected/mount/shared-subtree-make-unbindable b/tests/expected/mount/shared-subtree-make-unbindable
index 376cfac47..17f662a23 100644
--- a/tests/expected/mount/shared-subtree-make-unbindable
+++ b/tests/expected/mount/shared-subtree-make-unbindable
@@ -1 +1 @@
-unbindable
+private,unbindable
diff --git a/tests/expected/mount/shared-subtree-mount-private b/tests/expected/mount/shared-subtree-mount-private
new file mode 100644
index 000000000..17f662a23
--- /dev/null
+++ b/tests/expected/mount/shared-subtree-mount-private
@@ -0,0 +1 @@
+private,unbindable
diff --git a/tests/expected/mount/shared-subtree-mount-private-ro b/tests/expected/mount/shared-subtree-mount-private-ro
new file mode 100644
index 000000000..f5c8c27dd
--- /dev/null
+++ b/tests/expected/mount/shared-subtree-mount-private-ro
@@ -0,0 +1,2 @@
+private
+ro,relatime
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