beadm manual tests: Add overlay mounting authored by Witaut Bajaryn's avatar Witaut Bajaryn
# Commands for checking the pool's state
```
zfs snapshot -r ci@beadm-test
for i in $(zfs list -H -o name); do zfs diff "$i@beadm-test"; done
mount | grep gentoo-1
mount | grep tmp # for autonamed mountpoints
mount | grep upgraded
mount | grep zfs
touch /mnt/upgraded/var/tmp/portage/test
ls -la /var/tmp/portage
zfs list -r -t all
zfs list -r -t all -o name,origin
zfs list -o name,origin
zfs get all ci/ROOT/gentoo-2 | grep local
zpool get bootfs
```
# Test results # Test results
## `beadm list` ## `beadm list`
...@@ -9,7 +31,59 @@ Working ...@@ -9,7 +31,59 @@ Working
## `beadm {,u,un}mount` ## `beadm {,u,un}mount`
Unexpected: Unexpected:
- `beadm mount gentoo-4 /mnt/upgraded; beadm mount gentoo-5 /mnt/upgraded` overlays `gentoo-5`'s mounts on top of `gentoo-4`'s. Then `beadm unmount gentoo-5` unmounts only the children, but fails to unmount the root. It also fails to unmount `gentoo-4` or any of its children. Running `unmount /mnt/upgraded` makes `beadm unmount gentoo-4` work again.
```
localhost ~ # beadm mount gentoo-4 /mnt/upgraded
Mounted successfully on: '/mnt/upgraded'
localhost ~ # beadm mount gentoo-5 /mnt/upgraded
Mounted successfully on: '/mnt/upgraded'
localhost ~ # mount | grep upgraded
ci/ROOT/gentoo-4 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr on /mnt/upgraded/usr type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage on /mnt/upgraded/usr/portage type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/distfiles on /mnt/upgraded/usr/portage/distfiles type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/packages on /mnt/upgraded/usr/portage/packages type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5/usr on /mnt/upgraded/usr type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5/usr/portage on /mnt/upgraded/usr/portage type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5/usr/portage/distfiles on /mnt/upgraded/usr/portage/distfiles type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5/usr/portage/packages on /mnt/upgraded/usr/portage/packages type zfs (rw,relatime,xattr,noacl)
localhost ~ # beadm umount gentoo-5
Unable to unmount gentoo-5.
Doesn't exist.
localhost ~ # mount | grep upgraded
ci/ROOT/gentoo-4 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr on /mnt/upgraded/usr type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage on /mnt/upgraded/usr/portage type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/distfiles on /mnt/upgraded/usr/portage/distfiles type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/packages on /mnt/upgraded/usr/portage/packages type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
localhost ~ # beadm umount gentoo-4
Unable to unmount gentoo-4.
Doesn't exist.
localhost ~ # mount | grep upgraded
ci/ROOT/gentoo-4 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr on /mnt/upgraded/usr type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage on /mnt/upgraded/usr/portage type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/distfiles on /mnt/upgraded/usr/portage/distfiles type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/packages on /mnt/upgraded/usr/portage/packages type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-5 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
localhost ~ # umount /mnt/upgraded
localhost ~ # umount /mnt/upgraded
umount: /mnt/upgraded: target is busy.
localhost ~ # mount | grep upgraded
ci/ROOT/gentoo-4 on /mnt/upgraded type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr on /mnt/upgraded/usr type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage on /mnt/upgraded/usr/portage type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/distfiles on /mnt/upgraded/usr/portage/distfiles type zfs (rw,relatime,xattr,noacl)
ci/ROOT/gentoo-4/usr/portage/packages on /mnt/upgraded/usr/portage/packages type zfs (rw,relatime,xattr,noacl)
localhost ~ # beadm umount gentoo-4
Unmounted successfully
localhost ~ # mount | grep upgraded
```
- mounting shared filesystems using `-s ro` mounts them read-write instead (a TODO created during porting mentions this - fixable). - mounting shared filesystems using `-s ro` mounts them read-write instead (a TODO created during porting mentions this - fixable).
- doesn't mount shared filesystems (when `-s rw|ro` is passed) if the BE doesn't have the mountpoint directory
- doesn't remove the temporary mountpoints (e.g. `/tmp/tmp.KDkhs5`) (not implemented in illumos as well?). - doesn't remove the temporary mountpoints (e.g. `/tmp/tmp.KDkhs5`) (not implemented in illumos as well?).
- prints a warning about UUID when called with `-v` on a manually created BE: - prints a warning about UUID when called with `-v` on a manually created BE:
``` ```
...@@ -34,6 +108,8 @@ Working: ...@@ -34,6 +108,8 @@ Working:
- trying to unmount the running BE - refused - trying to unmount the running BE - refused
- trying to {,un}mount twice - refused - trying to {,un}mount twice - refused
- mounting shared filesystems using `-s rw` - mounting shared filesystems using `-s rw`
- including children with inherited mountpoints
- including children of ones with `canmount=off`
Untested: Untested:
- `beadm unmount -f be` - `beadm unmount -f be`
... ...
......