libc: inode id & copy
The current inode number scheme is missing one bit in it's implementation. When we're copying files using OS/2 facilities, or even zipping/unzipping stuff, we end up creating duplicate inode numbers.
The inode number generation is made up of two 32-bit numbers generated from the cannonized native path of the object. We then distiguish between creating a new object, correcting the inode value of an existing object, and generating a completely new one for an existing one. In the first case we have to generate both parts, and we use crc32 and sdbm for that. In the second case we read the inode number from the disk, but we regenerates the sdbm part. In the third case we generate both using djb2 and sdbm.
Here is the patch calculating inodes whenever stat()'ed. Even if files have the same inode on a disk, a program using stat() will show the different inodes.
At the beginning place, I'm not sure storing inodes into EA is right. It would be better to generate fake inodes whenever needed like this approach.