TODO

What I've done so far:

- a booting, non-crashing kernel that uses 32-bit UIDs internally

- a patched glibc which enables the use of 32-bit UIDs for everything except SysV IPC

- a fake "ext32" filesystem which can mount ext2 filesystems and read/write high UIDs

- verified that the Arla AFS client works properly under this system

What hasn't been tested yet:
- Disk quotas

- dump/restore on ext32 filesystems

- filesystems other than ext2, ext32, and Arla (AFS)

- file servers such as NFS, Samba, mars_nwe, netatalk, etc., with high UIDs

- SMP kernels


What's left to do:

- further modifications to glibc and kernel to support use of 32-bit UIDs in SysV IPC (with recompiled software)

- make glibc recognize whether it is running on a 16-bit UID kernel or a 32-bit UID kernel and act accordingly (this would be nice)

- fix up all the other drivers in the kernel to act properly with high UIDs (i.e. the other filesystem drivers)

- fix the utilities dealing with /etc/passwd to cope properly with huge passwd files
(the problems could be in login, passwd, PAM, libpwdb, or maybe even glibc...)

- clean up the patch procedure.  Presently, most of the kernel patch is just the "ext32" source code. In reality, this source is identical to the ext2 source so I really don't need to include it, just the minor changes that I made.

What I will do is just make a build procedure (in the RPM spec file) that does a
sed s/ext2/ext32 |sed s/EXT2/EXT32
to the ext2 driver code and include files, and then my patch will just include the diffs against this. (which will make it a lot smaller)
This will also obviously make it much easier to track changes in the kernel and ext2 driver.

- modify glibc to do better caching of lookups in /etc/passwd. Tar extractions are horribly slow on huge passwd files. I don't know if glibc caches login names that are successfully looked up, but it definitely doesn't cache nonexistent login names. This results in glibc continually looking for a nonexistent user on every file in a tar archive, which is horribly slow on big passwd files. Glibc should cache a list of nonexistent users to speed this up (it may need to check the modification time of  /etc/passwd to avoid long-running programs missing out on the adding of new users). (or at least, tar should be made smarter)

- support for 32-bit UIDs on architectures other than i386 (Alpha AXP and UltraSparc already have everything necessary except for a filesystem driver; all other Linux ports are stuck with 16-bit UIDs)

- Proper integration of 32-bit (or bigger) UIDs into the official Linux kernel!!


I'll do even more stuff with suitable bribes, click here  to find out.
 
 
 

- Chris Wing - wingc@engin.umich.edu - 12/4/1998