What remains to be done
[Posted November 19, 2003 by corbet]
The "must fix" and "should fix" lists which were frequently posted some
months ago have been keeping a low profile recently. They do still exist,
however, and some effort has gone into keeping them up to date. The latest
version is bundled with Andrew Morton's -mm patches. For the curious, here
are the
must-fix and
should-fix lists from 2.6.0-test9-mm4.
The must-fix remains surprisingly long, given that 2.6.0 is considered to
be right around the corner. It includes (among many other items):
- A lot of locking problems in the tty, parport, PCMCIA, SCSI, and input
drivers.
- Expanding dev_t to 64 bits is there, though the list
acknowledges that the current 32-bit size will be enough for 2.6.0.
Reaching 64 bits will require additional work with certain filesystems
(such as older NFS protocols) which are not prepared for it.
- The char device rework remains incomplete, though it is in a
functioning state now. It would not be surprising to see some changes
in the char device API early in 2.6.x. Such things cause endless
annoyance to people trying to write driver books.
- There are still fixes from the 2.4 tree - including security fixes -
which must be ported to 2.6. Alan Cox surfaced from his studies long enough to
note that this work is currently being done.
- The "misc device" interface is marked for removal, since the new char
device interface does all the same stuff. That change seems unlikely
for 2.6.x, however.
- Asynchronous I/O remains a work in progress. It has a number of
potentially lethal race conditions, and fairly straightforward things
(regular file I/O, for example) are not fully implemented. The -mm
tree contains a lot of AIO patches which should move over at some
point, but they clearly not the "one line fixes" that Linus is looking
for currently.
- Scheduler interactivity remains on the list, though the level of
complaining is lower than it used to be.
The "should-fix" list is even longer. It includes more IDE driver work,
various device mapper cleanups, the incorporation of a number of wireless
driver patches, the kexec patch (booting one kernel directly from another),
merging klibc (for initramfs images), MPLS support for IPSec, sorting out
the three-way software suspend disagreement, a kernel interface for
reporting errors to user space, improving the external module build
process, and numerous other things.
This list also still includes fixing module initialization races by not
enabling calls into the module until initialization is complete. With the
new module loading infrastructure, this change is an easy one to make. The
only problem is that it breaks certain things (like disk drivers, where the
kernel attempts to read the partition table when a disk is registered with
the system). These problems can be worked around, but there appears to be
little will to do so at this time.
No kernel will ever be perfect when it is released - making one perfect
would take so long that the kernel would no longer be relevant. Even so,
these lists are still long. Expect a bit of churn in the early 2.6.x
releases as the developers work at shortening them.
(
Log in to post comments)