On Thu, Aug 28, 2025 at 6:10 AM Miklos Szeredi <mszeredi@xxxxxxxxxx> wrote: > > On Thu, Aug 28, 2025 at 12:57 AM Joanne Koong <joannelkoong@xxxxxxxxx> wrote: > > > I wonder if we should make the semantics the same for synchronous and > > non-synchronous inits here, i.e. doing a wait for > > "(READ_ONCE(file->private_data) != FUSE_DEV_SYNC_INIT) && > > READ_ONCE(file->private_data) != NULL", so that from the libfuse point > > of view, the flow can be unified between the two, eg > > i) send sync_init ioctl call if doing a synchronous init > > ii) kick off thread to read requests > > iii) do mount call > > otherwise for async inits, the mount call needs to happen first. > > Do you suggest that libfuse should ignore the return value of the > sync_init ioctl? > > That doesn't work, because old kernels will return an error on read > from an uninitialized fuse dev. Also if kernel now blocks before > mount, that might break some odd server that expects an error. Oh right that's a good point, I forgot they might be running an older kernel. I guess libfuse will have to have two code paths for this regardless then, which seems totally fine. Thanks, Joanne