Re: Python linuxfs Modules
Oguz Kaan Ocal <[email protected]> Sun, 22 Mar 2026 14:14:35 +0300 (GMT+03:00)
| Newsgroups | comp.lang.python |
|---|---|
| Organization | news.eternal-september.org |
| Message-ID | <[email protected]> |
------=_Part_0_92459286.1774178075336 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Lawrence D?Oliveiro <[email protected]> Wrote in message:r > On Tue, 17 Mar 2026 14:30:42 +0300, Oguz Kaan Ocal wrote:> Regarding the = linuxacl and linuxmount modules: how do you handle> compatibility across di= fferent kernel versions? Since some of these> APIs (like Landlock or newer = mount features) are relatively recent,> does the library provide graceful f= allbacks or just raise> NotImplementedError?Landlock in particular has been= through about 7 versions so far, withsigns of an eighth on the way. I deal= with that by attach API versioninfo to the relevant enums.For example, if = you look at my Python version of the ?sandboxer?sample program in the Landl= ock documentation, I get the API versionfrom the current kernel with LL_= VERSION =3D linuxpriv.get_landlock_version()then I can collect sets of avai= lable access attributes with constructslike:* All read/write operations on = both files and directories: access_file_dir_rw =3D set \ ( a= cc for acc in ACCESS_FS if acc.min_version <=3D LL_VERSION )* R= ead-only operations on files: access_file_ro =3D set \ ( acc= for acc in ACCESS_FS if acc.min_version <=3D LL_VERSION and acc.fil= e_op and not acc.write_op )etc.As for libacl, I?m not aware of any API= version changes -- not in theman pages I?ve been reading so far. Similarly= the mount API -- both goso far back that I don?t think any kernels that do= n?t implement themare still in any kind of support. Correct me if I?m wrong= . ;)> Using sets of enums instead of bitmasks is definitely 'The Pythonic> = Way'. It makes the code much more self-documenting.More than that, I can at= tach extra attributes that can be used to easeprogramming, as in the exampl= es above. Thanks for the explanation, Lawrence. The way you?ve implemented the min_ve= rsion attribute within the enums for Landlock is actually quite clever?it?s= a clean way to handle the evolving nature of that API without cluttering t= he user-facing code. ?However, I have to push back a bit on your assumption regarding the mount = API. While the legacy mount(2) system call is indeed a relic of the past, L= inux introduced a completely New Mount API (starting with Kernel 5.2 in 201= 9) involving fsopen(), fspick(), fsmount(), and move_mount(). ?If your linuxmount module aims to be a comprehensive wrapper, ignoring the= se newer calls might be a missed opportunity. Conversely, if you are wrappi= ng them, then the 'universal compatibility' you mentioned doesn't quite app= ly to older LTS kernels or enterprise environments that haven't migrated pa= st 5.2 yet. In those cases, a simple NotImplementedError or an ENOSYS check= would still be necessary. ?As for linuxacl, I agree?POSIX ACLs are stable enough that they?re practic= ally part of the furniture at this point. ?The extra attributes like file_op and write_op are a great touch. It defin= itely saves the developer from having to keep a copy of the man pages open = just to remember which bitmask does what. --=20 ----Android NewsGroup Reader---- https://piaohong.s3-us-west-2.amazonaws.com/usenet/index.html ------=_Part_0_92459286.1774178075336--