Messages in this thread | | | Date | Wed, 23 Mar 2022 15:39:36 -0700 | Subject | Re: [RFC PATCH] getvalues(2) prototype | From | Casey Schaufler <> |
| |
On 3/23/2022 7:00 AM, Miklos Szeredi wrote: > On Wed, 23 Mar 2022 at 14:51, Casey Schaufler <casey@schaufler-ca.com> wrote: > >> You also need a way to get a list off what attributes are available >> and/or a way to get all available attributes. Applications and especially >> libraries shouldn't have to guess what information is relevant. If the >> attributes change depending on the filesystem and/or LSM involved, and >> they do, how can a general purpose library function know what data to >> ask for? > Oh, yes. Even the current prototype does that: > > # ~/getvalues / "" > [] = "mnt" "mntns" "xattr" "data" (len=21) > # ~/getvalues / "mnt" > [mnt] = "id" "parentid" "root" "mountpoint" "options" "shared" > "master" "propagate_from" "unbindable" (len=76) > # ~/getvalues / "mntns" > [mntns] = "21" "22" "24" "25" "23" "26" "27" "28" "29" "30" "31" "32" (len=36) > ~/getvalues / "mntns:21" > [mntns:21] = "id" "parentid" "root" "mountpoint" "options" "shared" > "master" "propagate_from" "unbindable" (len=76)
That requires multiple calls and hierarchy tracking by the caller. Not to mention that in this case the caller needs to understand how mount namespaces are being used. I don't see that you've made anything cleaner. You have discarded the type checking provided by the "classic" APIs. Elsewhere in this thread the claims of improved performance have been questioned, but I can't say boo about that. Is this interface targeted for languages other than C for which the paradigm might provide (more?) value?
> > I didn't implement enumeration for "data" and "xattr" but that is > certainly possible and not even difficult to do. > > Thanks, > Miklos
| |