Thread (20 messages) 20 messages, 4 authors, 1d ago

Re: [PATCH] ovl: add ioctls to retrieve layer file descriptors

From: Miklos Szeredi <miklos@szeredi.hu>
Date: 2026-07-08 10:25:09
Also in: linux-fsdevel, linux-unionfs

On Wed, 8 Jul 2026 at 12:00, Giuseppe Scrivano [off-list ref] wrote:
Add two ioctls to overlay filesystem to allow userspace to retrieve
information about the overlay layers:

OVL_IOC_OPEN_LAYER:     return an O_PATH fd to the root of a layer.
                        arg == 0 returns the upper layer (-ENOENT if
                        no upper is configured), arg >= 1 returns
                        lower layers (-ENOENT if index is out of
                        range).
We could do this with a plain open() call.  Something like the magic
symlinks we have under /proc/PID/fd/.   Question is where could these
live...
OVL_IOC_GET_LAYERS_INFO: copy a struct ovl_layers_info to userspace
                        with numlower, numlowerdata, and has_upper.
Isn't this info obtainable via statmount(2) already?  If not, it
should be there, instead of a specialized ioctl.
quoted hunk ↗ jump to hunk
--- a/fs/overlayfs/ovl_entry.h
+++ b/fs/overlayfs/ovl_entry.h
@@ -35,6 +35,8 @@ struct ovl_layer {
        struct vfsmount *mnt;
        /* Trap in ovl inode cache */
        struct inode *trap;
+       /* Keeps the original fsmount file alive for OVL_IOC_OPEN_LAYER */
+       struct file *origin;
Don't need to keep the file open: the only info missing is the
original vfsmount, everything else is already there to reconstruct the
file.

Thanks,
Miklos
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help