Looks put this 'mount_all' call in try-finally block is safer, in case something goes wrong when mounting one of the 'roots'.
Or handle all exceptions then umount mounded root in the mount_all method directly.