Re: [RFC PATCH] getvalues(2) prototype
From: Casey Schaufler <casey@schaufler-ca.com>
Date: 2022-03-23 22:39:45
Also in:
linux-api, linux-fsdevel, linux-man, lkml
On 3/23/2022 7:00 AM, Miklos Szeredi wrote:
On Wed, 23 Mar 2022 at 14:51, Casey Schaufler [off-list ref] wrote:quoted
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