API break, sysfs "capability" file

Lennart Poettering
2024-04-08T15:18:17Z

Hi!

So this broke systemd:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e81cd5a983bb35dabd38ee472cf3fea1c63e0f23

We use the "capability" sysfs attr to figure out if a block device has
part scanning enabled or not. There seems to be no other API for
this. (We also use it in our test suite to see if devices match are
expectations, and older systemd/udev versions used to match agains it
from udev rules.)

The interface was part of sysfs, and documented:

https://www.kernel.org/doc/html/v5.5/block/capability.html

While it doesn't list the partscan bit it actually does document that
one is supposed to look into include/linux/genhd.h for the various
bits and their meanings. I'd argue that makes them API to some level.

Could this please be reverted? Just keeping the relevant bits (i.e. at
least the media change feature bit, and the part scanning bit) is
enough for retaining userspace compat.

(Please consider googling or a github code search or so before removing
a public API like this. This compat breakage was very much avoidable
with a tiny bit of googling.)

Lennart

--
Lennart Poettering, Berlin