On Mon, Jun 3, 2024 at 3:44 PM Stefan Hajnoczi <stefanha@xxxxxxxxxx> wrote: > > On Mon, Jun 03, 2024 at 11:06:19AM +0200, Miklos Szeredi wrote: > > On Mon, 3 Jun 2024 at 10:53, Peter-Jan Gootzen <pgootzen@xxxxxxxxxx> wrote: > > > > > We also considered this idea, it would kind of be like locking FUSE into > > > being x86. However I think this is not backwards compatible. Currently > > > an ARM64 client and ARM64 server work just fine. But making such a > > > change would break if the client has the new driver version and the > > > server is not updated to know that it should interpret x86 specifically. > > > > This would need to be negotiated, of course. > > > > But it's certainly simpler to just indicate the client arch in the > > INIT request. Let's go with that for now. > > In the long term it would be cleanest to choose a single canonical > format instead of requiring drivers and devices to implement many > arch-specific formats. I liked the single canonical format idea you > suggested. > > My only concern is whether there are more commands/fields in FUSE that > operate in an arch-specific way (e.g. ioctl)? If there really are parts > that need to be arch-specific, then it might be necessary to negotiate > an architecture after all. How about something like this: - by default fall back to no translation for backward compatibility - server may request matching by sending its own arch identifier in fuse_init_in - client sends back its arch identifier in fuse_init_out - client also sends back a flag indicating whether it will transform to canonical or not This means the client does not have to implement translation for every architecture, only ones which are frequently used as guest. The server may opt to implement its own translation if it's lacking in the client, or it can just fail. We need to look at all the requests, if there are some other constants that need to be transformed. As for ioctl, the client cannot promise to transform everything, since most are not interpreted by the kernel. Ones which are, should be transformed. Thanks, Miklos