Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Posted Mar 17, 2020 6:00 UTC (Tue) by areilly (subscriber, #87829)In reply to: Filesystem-oriented flags: sad, messy and not going away by Cyberax
Parent article: Filesystem-oriented flags: sad, messy and not going away
Posted Mar 17, 2020 6:18 UTC (Tue)
by Cyberax (✭ supporter ✭, #52523)
[Link] (11 responses)
You can create a set of new syscalls with sane flags: openat_rational, link_rational, open_I_really_mean_it's_not_broken_this_time and so on. You then expose these new syscalls with their wonderful flags through libc, libc can also provide their emulation for the older kernels that lack the new syscalls.
Then after 20 years or so you can remove the old flags from libc, so that new code will be able to use the new flags. Then after another 10 years or so, the old syscalls can be removed from the kernel.
Posted Mar 17, 2020 6:29 UTC (Tue)
by areilly (subscriber, #87829)
[Link] (10 responses)
Posted Mar 17, 2020 6:33 UTC (Tue)
by Cyberax (✭ supporter ✭, #52523)
[Link] (9 responses)
Posted Mar 17, 2020 6:37 UTC (Tue)
by josh (subscriber, #17465)
[Link] (4 responses)
Posted Mar 17, 2020 9:51 UTC (Tue)
by smurf (subscriber, #17840)
[Link] (3 responses)
A corollary is that statically-linked programs may or may not continue to work when you update your kernel, a notion which Linus emphatically rejects.
Posted Mar 17, 2020 10:25 UTC (Tue)
by josh (subscriber, #17465)
[Link]
That said, it'd be interesting if we had a slightly more extensible syscall layer that could tell when an argument was passed or not passed, which would allow existing existing syscalls without having to create new ones.
It's looking increasingly like io_uring might be that extensible syscall layer.
Posted Mar 19, 2020 20:55 UTC (Thu)
by BenHutchings (subscriber, #37955)
[Link] (1 responses)
Posted Mar 23, 2020 15:27 UTC (Mon)
by gray_-_wolf (subscriber, #131074)
[Link]
sometimes... would be nice if it never did but that is sadly not the case :/
Posted Mar 17, 2020 6:47 UTC (Tue)
by areilly (subscriber, #87829)
[Link] (3 responses)
The BSD versioned syscalls are in the kernel (so you can still have static executables), but they can be supplied by loadable kernel modules (as the linux and SCO syscalls are/were), which can eventually be deprecated or not loaded as suits the use-case, without getting (too much) in the way of the "fresh" syscall API.
Posted Mar 17, 2020 6:53 UTC (Tue)
by josh (subscriber, #17465)
[Link] (2 responses)
How does Solaris provide that to userspace? Similar to the VDSO, or via a library provided on the filesystem that calls an unstable kernel interface?
Posted Mar 17, 2020 7:41 UTC (Tue)
by areilly (subscriber, #87829)
[Link] (1 responses)
Posted Mar 18, 2020 21:37 UTC (Wed)
by justincormack (subscriber, #70439)
[Link]
OpenBSD has been taking this model to a more modern design, where libc is blessed, and only it can make syscalls, by having a special attribute set. This is designed as a security measure, to stop arbitrary code using syscalls.
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
How? There will still be software that uses old flags, for the foreseeable future. You'll have to provide their emulation _somewhere_.
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away
Filesystem-oriented flags: sad, messy and not going away