]>
git.proxmox.com Git - mirror_zfs.git/blob - tests/zfs-tests/tests/functional/cli_root/zfs_mount/zfs_multi_mount.ksh
5 # This file and its contents are supplied under the terms of the
6 # Common Development and Distribution License ("CDDL"), version 1.0.
7 # You may only use this file in accordance with the terms of version
10 # A full copy of the text of the CDDL should have accompanied this
11 # source. A copy is of the CDDL is also available via the Internet
12 # at http://www.illumos.org/license/CDDL.
18 # Copyright(c) 2018 Datto Inc.
21 .
$STF_SUITE/include
/libtest.shlib
25 # Verify multi mount functionality
29 # 2. Create and hold open file in filesystem
31 # 4. Verify remounting fs that was lazily unmounted is possible
32 # 5. Verify multiple mounts of the same dataset are possible
33 # 6. Verify bind mount doesn't prevent rename
36 verify_runnable
"both"
40 ismounted
$MNTPFS && log_must umount
$MNTPFS
41 ismounted
$MNTPFS2 && log_must umount
$MNTPFS2
42 ismounted
$MNTPFS3 && log_must umount
$MNTPFS3
43 ismounted
$MNTPFS4 && log_must umount
$MNTPFS4
44 ismounted
$RENAMEMNT && log_must umount
$RENAMEMNT
45 datasetexists
$TESTDS && log_must destroy_dataset
"$TESTDS" "-f"
49 log_assert
"Verify multiple mounts into one namespace are possible"
52 TESTDS
="$TESTPOOL/multi-mount-test"
53 log_must zfs create
$TESTDS
55 # 2. Create and hold open file in filesystem
56 MNTPFS
="$(get_prop mountpoint $TESTDS)"
57 FILENAME
="$MNTPFS/file"
58 log_must mkfile
128k
$FILENAME
59 log_must
exec 9<> $FILENAME # open file
63 # FreeBSD does not support lazy unmount
64 log_must umount
$MNTPFS
66 log_must umount
-l $MNTPFS
68 if [ -f $FILENAME ]; then
69 log_fail
"Lazy unmount failed"
72 # 4. Verify remounting fs that was lazily unmounted is possible
73 log_must zfs mount
$TESTDS
74 if [ ! -f $FILENAME ]; then
75 log_fail
"Lazy remount failed"
77 log_must
exec 9>&- # close fd
79 # 5. Verify multiple mounts of the same dataset are possible
80 MNTPFS2
="$MNTPFS-second"
81 FILENAME
="$MNTPFS2/file"
82 log_must mkdir
$MNTPFS2
83 log_must mount
-t zfs
-o zfsutil
$TESTDS $MNTPFS2
84 if [ ! -f $FILENAME ]; then
85 log_fail
"First multi mount failed"
88 MNTPFS3
="$MNTPFS-third"
89 FILENAME
="$MNTPFS3/file"
90 log_must mkdir
$MNTPFS3
91 log_must mount
-t zfs
-o zfsutil
$TESTDS $MNTPFS3
92 if [ ! -f $FILENAME ]; then
93 log_fail
"Second multi mount failed"
96 # 6. Verify bind mount doesn't prevent rename
97 RENAMEFS
="$TESTDS-newname"
98 MNTPFS4
="$MNTPFS-fourth"
99 log_must mkdir
$MNTPFS4
100 log_must mount
--bind $MNTPFS $MNTPFS4
101 log_must zfs rename
$TESTDS $RENAMEFS
102 RENAMEMNT
="$(get_prop mountpoint $RENAMEFS)"
103 FILENAME
="$RENAMEMNT/file"
104 if [ ! -f $FILENAME ]; then
105 log_fail
"Rename failed"
107 log_must zfs rename
$RENAMEFS $TESTDS
109 log_pass
"Multiple mounts are possible"