On Thu, Nov 2, 2023 at 12:46 PM Miklos Szeredi <miklos@xxxxxxxxxx> wrote: > > > > > Remember that we would actually need to do backing_file_open() > > for all existing open files of the inode. > > I know. > > > Also, after the server calls FUSE_DEV_IOC_BACKING_CLOSE, > > will the fuse_backing object still be referenced from the inode > > (as it was in v13)? and then properly closed only on the last file > > close on that inode? > > Yes, those seem the most intuitive semantics. > Just to be clear, at the last close for an inode, we would check if attribute cache needs to be invalidate and the inode will return to "neutral" mode, when server could legally switch between caching and passthrough mode. This part is critical to my in-house server, because when files are not open, their content may become evicted and they may no longer be passed through to. > > I am not convinced that this complexity is a must for the first version. > > If the server always sets FOPEN_PASSTHROUGH (as I expect many > > servers will) this is unneeded complexity. > > > > It seems a *lot* easier to do what you suggested and ignore > > FOPEN_PASSTHROUGH if the server is not being consistent > > with the FOPEN_ flags it uses. > > The problem with ignoring is that we can't change the semantics later. > > So I think it would be better to enforce consistency such that if > there's already an open file, new open files will have to have the > same FOPEN_PASSTHROUGH state, and just reject with EIO if not. > EIO works for me. Just as simple. Will try to get this ready for early 6.8 cycle. Thanks, Amir.