old linux scsi headers
Hello glibc people,
This concerns sysdeps/unix/sysv/linux/scsi/{scsi, scsi_ioctl, sg}.h
They define common SCSI values, as well as Linux's SCSI-related ioctls.
Apparently they were copied from the Linux kernel tree back in 1999, so they're pretty stale.
I'm wondering if I should submit a patch to update these to what's current from the Linux tree, or if maybe it wouldn't be better to have users just directly get these as "uapi" headers from the Linux kernel source directly?
The latter method has issues with being a breaking change for code that relies on what's in glibc now, which may or may not be something we can ease, but would ensure the headers would not become stale again in the future.
What do you think about the best way to proceed?
Thanks -- Regards -- Andy
Quoted 13 lines · Andy Grover
Hello glibc people,
This concerns sysdeps/unix/sysv/linux/scsi/{scsi,
scsi_ioctl, sg}.hThey define common SCSI values, as well as Linux's SCSI-related ioctls.
Apparently they were copied from the Linux kernel tree back in 1999, so they're pretty stale.
I'm wondering if I should submit a patch to update these to what's current from the Linux tree, or if maybe it wouldn't be better to have users just directly get these as "uapi" headers from the Linux kernel source directly?
Quoted 6 lines
The latter method has issues with being a breaking change for code that relies on what's in glibc now, which may or may not be something we can ease, but would ensure the headers would not become stale again in the future.
What do you think about the best way to proceed?
FYI, I'd like to repeat my propsal from the scsi list here, and a few alternatives:
(1) separate namespaces (my proposal):
- we add uapi linux/scsi_ioctl.h and linux/sg.h files that just add the ioctl defintions and data structures required for them.
- because they are linux/ instead of scsi/ are not required to keep things like the old opcode or SCSI-2 defintions, which glibc can keep in the scsi/* wrappers, and hopefully slowly deprecate over the long run
(2) just export what we have in the kernel now (Andys patch):
- add uapi scsi/scsi.h and scsi/scsi_ioctl.h (and scsi/sg.h for v2), exporting what we have in them right now, which might be a little different from glibc
- remove glibcs scsi/*.h
(2a)
- like 2, but only export the ioctls APIs, the other constants will go away at this point
(2b)
- like 2a, but also add defines compatible to glibc under #ifndef __KERNEL__ to the uapi headers.
Quoted 24 lines · Christoph Hellwig
Quoted 13 lines · Andy Grover
Hello glibc people,
This concerns sysdeps/unix/sysv/linux/scsi/{scsi,
scsi_ioctl, sg}.hThey define common SCSI values, as well as Linux's SCSI-related ioctls.
Apparently they were copied from the Linux kernel tree back in 1999, so they're pretty stale.
I'm wondering if I should submit a patch to update these to what's current from the Linux tree, or if maybe it wouldn't be better to have users just directly get these as "uapi" headers from the Linux kernel source directly?
Quoted 6 lines
The latter method has issues with being a breaking change for code that relies on what's in glibc now, which may or may not be something we can ease, but would ensure the headers would not become stale again in the future.
What do you think about the best way to proceed?
FYI, I'd like to repeat my propsal from the scsi list here, and a few alternatives:
Quoted 8 lines
(1) separate namespaces (my proposal):
- we add uapi
linux/scsi_ioctl.handlinux/sg.hfiles that just add the ioctl defintions and data structures required for them.
- because they are linux/ instead of scsi/ are not required to keep things like the old opcode or SCSI-2 defintions, which glibc can keep in the scsi/* wrappers, and hopefully slowly deprecate over the long run
Fine by me. This lets the kernel publish up-to-date headers, and lets glibc handle the old headers at its own pace.
I'll post a patch shortly.
Regards -- Andy
Quoted 18 lines
(2) just export what we have in the kernel now (Andys patch):
- add uapi
scsi/scsi.handscsi/scsi_ioctl.h(andscsi/sg.hfor v2), exporting what we have in them right now, which might be a little different from glibc
- remove glibcs scsi/*.h(2a)
- like 2, but only export the ioctls APIs, the other constants will go away at this point
(2b)
- like 2a, but also add defines compatible to glibc under
#ifndef __KERNEL__ to the uapi headers.