No (well, not much) kernel hacking on a Sunday

These days it is possible to host the Linux kernel on GitHub and their tools reveal some interesting things about the pattern of kernel hacking (or at least of kernel committing.)

The “punchcard” tool shows what times commits are made. And here it is for the Linux kernel:

GitHub punchcard for the Linux kernelIt seems that kernel hacking is pretty much a 9 – 5 week-a-day task, though with a bit of extra stuff in the evenings – pretty much what one would expect from a team of office workers.

With more and more additions to the kernel coming straight off git pulls, this pattern must reflect rather more than Linus Torvalds‘ own office habits.

It looks like the image of kernel hackers as nerds pulling all-nighters with the help of “rotary debuggers” (see Hackers: Heroes of the Computer Revolution for more of that) is well past its use-by date: building Linux is just a job.

One of those debugging nights

English: An NTSC Sega Dreamcast Console and PA...
Image via Wikipedia

It must be a situation every programmer is familiar with – you write some code, you are pretty pleased with it, but it just doesn’t work and while you know it is only a small thing that is stopping it from functioning properly, but you just cannot track it down.

That is exactly where I am with my code for the “VMUFAT” file system – the file system for the Sega Dreamcast VMU. After a decade of trying (in fits and starts), I now have a code base which I think is good enough, or almost good enough, to post to LKML without me being burnt to a crisp by the subsequent flames.

But it just doesn’t work! Trying to list the files on the device gets a list of 200 copies of the same file (200 is the maximum number of files that a standard VMU can index in its directory blocks and the code throws an error when you exceed that).

The thing is, the old, ugly, code worked at this. But I cannot see what I am doing wrong with the new, clean, code. Indeed it seems to replicate exactly the same functionality. Last night I picked up a couple of bugs in the code quickly but, whilst they addressed one error, they did not fix the big one.

Time for a rotary debugger? Well, it will be a roti debugger in this house, this Friday evening.