Re: [PATCH v2 00/13] Overlayfs lazy lookup of lowerdata

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 30, 2023 at 04:08:38PM +0200, Miklos Szeredi wrote:
> On Sat, 27 May 2023 at 16:04, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
> 
> > If we would want to support data-only layers in the middle on the
> > stack, which would this syntax make sense?
> > lowerdir=lower1::data1:lower2::data2
> >
> > If this syntax makes sense to everyone, then we can change the syntax
> > of data-only in the tail from lower1::data1:data2 to lower1::data1::data2
> > and enforce that after the first ::, only :: are allowed.
> >
> > Miklos, any thoughts?
> > I have a feeling that this was your natural interpretation when you first
> > saw the :: syntax.
> 
> Yes, I think it's more natural to have a prefix for each data-only
> layer.  And this is also good for extensibility, as discussed.

Sorry, just a quick braindump vaguely related to this new mount syntax.

A while ago util-linux reported issues with overlayfs when mounted
through the new mount api (cf. [1]) and I completely forgot to mention
this to you during LSFMM. So say you do:

        fs_fd = fsopen("overlay", FSOPEN_CLOEXEC);

        fsconfig(fs_fd, FSCONFIG_SET_STRING, "upperdir", "/home/asavah/kross/tmp/asusb450eg/upper", 0);

        fsconfig(fs_fd, FSCONFIG_SET_STRING, "workdir", "/tmp/work", 0);

        fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20:21:22:23:24:25:26:27:28:29:2a:2b:2c:2d:2e:2f:

This will fail because FSCONFIG_SET_STRING is limited to 256 bytes.
That's a reasonable limit and I don't think we need to extend this to
PATH_MAX.

Instead, my reaction had been that lowerdir should be specifiable
multiple times through fsconfig() and overlayfs should probably append
lower layers via:

        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "/home/username/project/data1", 0);
        // append 
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", ":/home/username/project/data2", 0);
        // append
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", ":/home/username/project/data3", 0);

        // replace everything specified until now
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "/home/username/project/data4", 0);

        // reset everything
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "", 0);

so with the new syntax this would probably be:

        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "/home/username/project/data1", 0);
        // append data only layer
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "::/home/username/project/data2", 0);
        // append data only layer
        ret = fsconfig(fs_fd, FSCONFIG_SET_STRING, "lowerdir", "::/home/username/project/data3", 0);

[1]: https://github.com/util-linux/util-linux/issues/1992



[Index of Archives]     [Linux Filesystems Devel]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux