The ZFS tale

Wonder what? I cannot sleep tonight either. I think my biological clock is not totally broken, and I cannot get to sleep at all. The nasty thing is that I’m dead tired, maybe too tired to sleep, and that is driving me crazy because I want to sleep, today like I didn’t in the past months. And the bad thing is that I’m supposed to go to the mall later on today with my brother in law, as I need to pay the last month of the old iBook, and look up a decent bag for the new one. You close one circle to open another sometimes.

Of the long TODO list I had yesterday, I wasn’t really able to make much; the hope to watch a movie while lying on the couch vanished easily, as I’ve started taking care of a few things. For once, I wanted to be able to compile and run pan on Gentoo/FreeBSD, for the pure sport of fixing things while I’m at it (actually, gmime was fixed already by upstream, so I didn’t have to patch it at all at the end, thanks to Ticho who simply bumped it). I didn’t have time to look at nss-mdns, and I now seen that there’s a new release too (I hope that 0.9 won’t break my patch too badly), but I had another entry on the TODO list that was interesting enough to prioritise over the rest for a day at least.

[Now of course, even tonight, like last night, and the night before, and three nights ago, my cat had to come in my room to see if I was awake, until I brought her down, and gave her an old shirt of mine – that I was already going to give her as it was kinda ruined now – which lowered my hopes to be able to sleep soonish… at least I drank two glasses of white milk, it might make me sleep better]

So what is the interesting thing that fascinated me away from finishing the port of nss-mdns? It had to be something cool, or I would have preferred helping FreeBSD devs for sure ..

Well, Astinus pointed me to a patch to FreeBSD -CURRENT to support ZFS natively; considering that FreeBSD does not have license problems with using cddl code in the kernel, it was interesting for them to integrate. I looked at the patch and the main issue was to break it down into a kernel patch and an userland package, so I started working on that, with Astinus who’s gonna be the test moneky for it 🙂

The results aren’t totally ready yet, as I was able to get the kernel patched, but not the userland to compile; I haven’t tried compiling the kernel y et, neither. The main issue is that the userland not only requires the patched kernel, but seems to rely on some compatibility support that was probably added to 7-CURRENT, so I have to work it around to get it working on 6.2, but it seems to come out nicely up to now.

For what regards Klothos, still missing a way to parse and interpret the coredump, I’ve decided to get a try to make catalyst build a new stage of that too, with the libedit problem fixed. The main problem that made me gave it up before was that it had to load the nullfs module, that caused the Kernel to panic, as I told already; by building nullfs inside the kernel, I can make catalyst work for the time being. Unfortunately when I started looking to start the catalyst build there, I got in a fight with my soundcard, that required me to shut Enterprise off (which shared the Portage tree I was going to snapshot at the time).

Now there are two things I want to talk with in this blog entry, before the end. The first is the soundcard fight and the second is a problem with the Gentoo/FreeBSD 6.2_rc2 stages that Astinus pointed me at.

Starting with the second, that is more interesting to users, there seems to be a problem with the Portage version shipped with the 6.2_rc2 stages I released a couple of days ago; that version of portage is unable to create $DISTDIR if it’s missing, so fetching packages will fail until you create the directory yourself and give it to portage user and group; to fix this issue, I now have Prakesh doing a new catalyst run for a stage3 only (stage1 and stage2 are byproducts of the process to create the stage3, I publish them for completeness as releng does so, but I won’t support them anyway), so that it can be refreshed on mirrors and I can tell Jeffrey to remove 6.2_beta3 too to avoid wasting space 🙂

And if you didn’t already notice, nightmorph updated the Gentoo/FreeBSD Installation Guide that now covers the 6.2 stages (built with Catalyst and with baselayout 1.13), and the problems with the partition being created as ad0s1d rather than ad0s1a. Thanks goes to him who updated it in a matter of hours from my pretty long and boring mail.

For what concerns my fight with the soundcard, I have to say I came to hate not only ALSA but also the via82xx driver; the former because the new kernel release is, surprise, breaking alsa-driver again, so unless upstream this time is nice enough to give me an rc2 before the new kernel is released, I’ll have to resort to a snapshot once again; the latter because I wasn’t able to get it to work on 6 channels in any way.

Let me try to explain: John Myers commented on my previous post giving me a command line that actually works to extract the audio tracks of a DVD with mplayer (<tt>mplayer dvd://[<title>] [-chapter <start>[-<end>]] -vo null -vc null -ao pcm:fast:[file=<filename>] -channels 6</tt>), thanks John a lot, it works as a charm!

The extraction works, WavPack encoding works (besides, thanks Timothy too, for pointing me at the ability of wavpack command to set the metadata on ripping, now I can rip my next CDs without having to tag them later with Amarok!), but I cannot play the files. Audacious doesn’t support multichannel WavPacks, FFmpeg (at least the version in portage) does not demux them correctly, and also mplayer fails to read them (because it seems to use FFmpeg’s demuxer for them); the best result I got with xine, that plays them although very garbled, I suppose I can be proud of this 🙂

While trying to find what was causing the problem, so that I could try to see if newer FFmpeg works, or if I can fix it myself, I tried to see if the original multichannel WAV file was playing correctly… but aplay was able only to give it to me in 2 channels. I tried every configuration and every choice, but my via82xx just plainly refuses to play more than two channels unless I use IEC958 passthrough and an AC3 or DTS track. The speaker-test does not work (it used to last year, at least I think I remember it did), it does not even do more than one channel when I point it to hw:0,0, while surround51 has the appearance to work, while it only outputs on left and right channel, as usual. I start to hate that card, not only it does not work as intended now, but it also requires me to shut both the computer and the external amplifier down to reset if I crash something down (in my last case, the a52 ALSA plugin), so that not even iecset can reset. I’d really like a decent soundcard, but I’m not even sure what I should look for; tsunam and nightmorph suggested Audigy2 ZS but I can’t even find them on ebay at a first glance (let alone finding them in a shop), and the newer Creative cards are not supported at all. Suggestions welcome.