How is the 9p protocol used in LXD?

In some other post* Stéphane commented that CentOS 8 images no longer work because Redhat had removed the 9p kernel module. Now I can’t stop thinking about this. How is LXD using 9p?

LXD out of the box exposes a network share called config over both 9p and virtiofs.
This network share contains the agent binary, agent keys and some configuration files and templates. It also contains instructions (in the form of a script) and systemd jobs to install the agent on a system which doesn’t have the loader in place already.

We then have a small systemd unit in all our images which will detect that the system is a LXD VM and if it is, will mount the config network share and spawn the agent from it. The agent then accepts connections from LXD on the host and handles things like exec and file transfer sessions.

Now we also export the config drive over virtiofs it should work fine without 9p support.