On Fri, Jun 5, 2020 at 12:34 AM Alexander Mikhalitsyn <alexander.mikhalitsyn@xxxxxxxxxxxxx> wrote: > > Hello, > > >But overlayfs won't accept these "output only" options as input args, > which is a problem. > > Will it be problematic if we simply ignore "lowerdir_mnt_id" and "upperdir_mnt_id" options in ovl_parse_opt()? > That would solve this small problem. > >Wouldn't it be better for C/R to implement mount options > that overlayfs can parse and pass it mntid and fhandle instead > of paths? > > Problem is that we need to know on C/R "dump stage" which mounts are used on lower layers and upper layer. Most likely I don't understand something but I can't catch how "mount-time" options will help us. As you already know from inotify/fanotify C/R fhandle is timeless, so there would be no distinction between mount time and dump time. About mnt_id, your patches will cause the original mount-time mounts to be busy. That is a problem as well. I think you should describe the use case is more details. Is your goal to C/R any overlayfs mount that the process has open files on? visible to process? For NFS export, we use the persistent descriptor {uuid;fhandle} (a.k.a. struct ovl_fh) to encode an underlying layer object. CRIU can look for an existing mount to a filesystem with uuid as restore stage (or even mount this filesystem) and use open_by_handle_at() to open a path to layer. After mounting overlay, that mount to underlying fs can even be discarded. And if this works for you, you don't have to export the layers ovl_fh in /proc/mounts, you can export them in numerous other ways. One way from the top of my head, getxattr on overlay root dir. "trusted.overlay" xattr is anyway a reserved prefix, so "trusted.overlay.layers" for example could work. Thanks, Amir.