On Tue, May 11, 2021 at 02:31:14PM +0200, Miklos Szeredi wrote: > On Mon, May 10, 2021 at 5:55 PM Greg Kurz <groug@xxxxxxxx> wrote: > > > > Honor the expected behavior of syncfs() to synchronously flush all data > > and metadata on linux systems. Simply loop on all known submounts and > > call syncfs() on them. > > Why not pass the submount's root to the server, so it can do just one > targeted syncfs? > > E.g. somehting like this in fuse_sync_fs(): > > args.nodeid = get_node_id(sb->s_root->d_inode); Hi Miklos, I think current proposal was due to lack of full understanding on my part. I was assuming we have one super block in client and that's not the case looks like. For every submount, we will have another superblock known to vfs, IIUC. That means when sync() happens, we will receive ->syncfs() for each of those super blocks. And that means file server does not have to keep track of submounts explicitly and it will either receive a single targeted SYNCFS (for the case of syncfs(fd)) or receive multile SYNCFS calls (one for each submount when sync() is called). If that's the case, it makes sense to send nodeid of the root dentry of superblock and file server can just call syncfs(inode->fd). Thanks Vivek