The cu41 opcode translates UTF32 to UTF8. Each "parameter" is a register pair [1], which describes address and length of the buffer. This opcode will return after a not specified number of translated characters. The rest is boiler plate code for condition code checking. The loop makes sure that anything is converted within the function unless another error occured.

As Linux-VServer is currently asleep, I thought about what may be possible only with the functionality the upstream Linux kernel provides and a helper module.

Process isolation

Isolation is the important feature VServer provides. Linux supports isolation of processes also in form of user, PID and IPC namespaces. User namespaces allows the same UID to be different. PID namespaces restricts the view of the available processes and allows the process only to address PIDs within it's own namespace.

Migration

VServer allows processes to enter a guest after it have been created, this is not possible without help.

fakeinit

Each PID namespace needs a child reaper (with PID 1).

Network isolation

VServer currently uses a layer 3 isolation model which assigns access to a specific list of IP addresses to a guest. It can be replaced by network namespaces and the accepted veth driver which provides a ethernet device.

Filesystem isolation

VServer uses FS namespaces in a way which allows processes in the FS namespace to access the host filesystem. This needs the chroot barier to make breakouts impossible.

Today I got another broken DVD.
It is the special edition of The Shawshank Redemption.
It is rather new and libdvdread just chokes on it.
At least the old one does, while the version in sid is able to read them, thanks to a small patch.

The DVD exploits a feature of the standard.
The filesystem on it (UDF) provides a size for the info files (VTS_XX_0.IFO) and the corresponding backup file (VTS_XX_0.BUP).
This sizes are void, only the offsets within the files matters.
The sizes are just too small and libdvdread checked that while reading them.

Thanks to the patch, libdvdread now updates its internal knowledge while parsing the file.
With the fix it is possible to play the DVD, at least with mplayer.
But I want to play it on my machine without optical drive.
I used dvdbackup to read other DVDs but it simply failed this time.

This DVD also have broken backup files.
They have different sizes, sometimes they even look empty, and contents than the real ones.
With the corrent amount of force (just ignoring them) and some magic (#467075) dvdbackup copies something to disk which is playable with mplayer (libdvdread) and totem (libdvdnav).

Okay, nothing is complete.
This DVD contains another title set which seems to be never referenced.
It have a completely bogus info file and a 1GB menu VOB.

After another debugging session I have to declare that caching of ressources with Vary headers is not working with squid 2.6. I have to check if this was working with squid 2.5 as Plone provides a predefined setup for this.