ddstreet@localhost:~$ systemctl show -p BindsTo snap-hello\\x2dworld-29.mount
BindsTo=
ddstreet@localhost:~$ sudo systemctl daemon-reload
ddstreet@localhost:~$ systemctl show -p BindsTo snap-hello\\x2dworld-29.mount
BindsTo=dev-loop6.device
ubuntu@test-b-full:~$ systemctl show -p BindsTo snap-hello\\x2dworld-29.mount
BindsTo=
ubuntu@test-b-full:~$ sudo systemctl daemon-reload
ubuntu@test-b-full:~$ systemctl show -p BindsTo snap-hello\\x2dworld-29.mount
BindsTo=
Once the mount unit BindsTo= the loop device, systemd won't start the mount unit (which actually runs 'mount') until the loop device is 'started' but of course the loop device won't ever be started until 'mount' is called.
This added BindsTo is what's causing the problem:
ddstreet@ localhost: ~$ systemctl show -p BindsTo snap-hello\ \x2dworld- 29.mount localhost: ~$ sudo systemctl daemon-reload localhost: ~$ systemctl show -p BindsTo snap-hello\ \x2dworld- 29.mount dev-loop6. device
BindsTo=
ddstreet@
ddstreet@
BindsTo=
ubuntu@ test-b- full:~$ systemctl show -p BindsTo snap-hello\ \x2dworld- 29.mount test-b- full:~$ sudo systemctl daemon-reload test-b- full:~$ systemctl show -p BindsTo snap-hello\ \x2dworld- 29.mount
BindsTo=
ubuntu@
ubuntu@
BindsTo=
Once the mount unit BindsTo= the loop device, systemd won't start the mount unit (which actually runs 'mount') until the loop device is 'started' but of course the loop device won't ever be started until 'mount' is called.