On Wed, 20 Aug 2025 at 17:16, Darrick J. Wong <djwong@xxxxxxxxxx> wrote: > How does one add a new field to struct fuse_init_out without breaking > old libfuse / fuse servers which still have the old fuse_init_out? There's currently 22 bytes unused at the end, so it's easy unless you want to add more. Ideally there should also be a matching feature flag indicating that a) kernel supports this feature b) field contains valid data. > AFAICT, fuse_send_init sets out_argvar, so fuse_copy_out_args will > handle a short reply from old libfuse. But a new libfuse running on an > old kernel can't send the kernel what it will think is an oversized > init reply, right? > > So I think we end up having to declare a new flags bit for struct > fuse_init_in, and the kernel sets the bit unconditionally. libfuse > sends the larger fuse_init_out reply if the new flag bit is set, or the > old size if it isn't. Does that sound correct? I think that's exactly what the previous size extension did (FUSE_INIT_EXT flag). Thanks, Miklos