Public bug reported:

# zpool create -o ashift=12 -O atime=off -O canmount=off -O normalization=formD 
-O mountpoint=/ -R /mnt rpool /dev/vda2
# zfs create rpool/ROOT -o canmount=off -o mountpoint=none
# zfs create rpool/ROOT/ubuntu_123456  -o mountpoint=/
# zfs create rpool/ROOT/ubuntu_123456/var
# zfs create rpool/ROOT/ubuntu_123456/var/lib -o canmount=off
# zfs create rpool/var -o canmount=off
# zfs create rpool/var/lib
# zfs create rpool/var/games
# zfs create rpool/ROOT/ubuntu_123456/var/lib/apt

Zfs mount is what we expect (5 datasets mounted):
# zfs mount
rpool/ROOT/ubuntu_123456        /mnt
rpool/ROOT/ubuntu_123456/var    /mnt/var
rpool/var/games                 /mnt/var/games
rpool/var/lib                   /mnt/var/lib
rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt
# zfs umount -a

Everything unmounted as expected:
# find /mnt/
/mnt/

However, zfs mount -a doesn't mount everything in the correct order reliably:
# zfs mount -a
cannot mount '/mnt': directory is not empty
-> In that case, rpool/ROOT/ubuntu_123456 wasn't mounted:
# zfs mount
rpool/ROOT/ubuntu_123456/var    /mnt/var
rpool/var/lib                   /mnt/var/lib
rpool/var/games                 /mnt/var/games
rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt
# find /mnt/
/mnt/
/mnt/var
/mnt/var/lib
/mnt/var/lib/apt
/mnt/var/games
# zfs umount -a
# find /mnt/
/mnt/
-> Everything was umounted, let's try to remount all again:

# zfs mount -a
cannot mount '/mnt/var/lib': failed to create mountpoint
# zfs mount
rpool/ROOT/ubuntu_123456        /mnt
rpool/ROOT/ubuntu_123456/var    /mnt/var
rpool/var/games                 /mnt/var/games
rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt

-> This time, rpool/ROOT/ubuntu_123456 was mounted, but not
rpool/var/lib (before rpool/ROOT/ubuntu_123456/var/lib/apt)

Tested as well with zfs 0.7: tried to zfs mount -a && zfs umount -a in
loop, no issue: all datasets are mounted in the correct order reliably.

Note that it seems to be related to the version of zfs we created a pool with:
- Try zfs mount -a on zfs 0.7 with a pool/datasets created under zfs 0.8: the 
ordering issues occur
- Try zfs mount -a on zfs 0.8 with a pool/datasets created under zfs 0.7: no 
ordering issue.

** Affects: zfs-linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to zfs-linux in Ubuntu.
https://bugs.launchpad.net/bugs/1837717

Title:
  [0.8 regression] zfs mount -a dataset mount ordering issues

Status in zfs-linux package in Ubuntu:
  New

Bug description:

  # zpool create -o ashift=12 -O atime=off -O canmount=off -O 
normalization=formD -O mountpoint=/ -R /mnt rpool /dev/vda2
  # zfs create rpool/ROOT -o canmount=off -o mountpoint=none
  # zfs create rpool/ROOT/ubuntu_123456  -o mountpoint=/
  # zfs create rpool/ROOT/ubuntu_123456/var
  # zfs create rpool/ROOT/ubuntu_123456/var/lib -o canmount=off
  # zfs create rpool/var -o canmount=off
  # zfs create rpool/var/lib
  # zfs create rpool/var/games
  # zfs create rpool/ROOT/ubuntu_123456/var/lib/apt

  Zfs mount is what we expect (5 datasets mounted):
  # zfs mount
  rpool/ROOT/ubuntu_123456        /mnt
  rpool/ROOT/ubuntu_123456/var    /mnt/var
  rpool/var/games                 /mnt/var/games
  rpool/var/lib                   /mnt/var/lib
  rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt
  # zfs umount -a

  Everything unmounted as expected:
  # find /mnt/
  /mnt/

  However, zfs mount -a doesn't mount everything in the correct order reliably:
  # zfs mount -a
  cannot mount '/mnt': directory is not empty
  -> In that case, rpool/ROOT/ubuntu_123456 wasn't mounted:
  # zfs mount
  rpool/ROOT/ubuntu_123456/var    /mnt/var
  rpool/var/lib                   /mnt/var/lib
  rpool/var/games                 /mnt/var/games
  rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt
  # find /mnt/
  /mnt/
  /mnt/var
  /mnt/var/lib
  /mnt/var/lib/apt
  /mnt/var/games
  # zfs umount -a
  # find /mnt/
  /mnt/
  -> Everything was umounted, let's try to remount all again:

  # zfs mount -a
  cannot mount '/mnt/var/lib': failed to create mountpoint
  # zfs mount
  rpool/ROOT/ubuntu_123456        /mnt
  rpool/ROOT/ubuntu_123456/var    /mnt/var
  rpool/var/games                 /mnt/var/games
  rpool/ROOT/ubuntu_123456/var/lib/apt  /mnt/var/lib/apt

  -> This time, rpool/ROOT/ubuntu_123456 was mounted, but not
  rpool/var/lib (before rpool/ROOT/ubuntu_123456/var/lib/apt)

  Tested as well with zfs 0.7: tried to zfs mount -a && zfs umount -a in
  loop, no issue: all datasets are mounted in the correct order
  reliably.

  Note that it seems to be related to the version of zfs we created a pool with:
  - Try zfs mount -a on zfs 0.7 with a pool/datasets created under zfs 0.8: the 
ordering issues occur
  - Try zfs mount -a on zfs 0.8 with a pool/datasets created under zfs 0.7: no 
ordering issue.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1837717/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to