Messages in this thread |  | | Date | Thu, 4 Jul 1996 00:20:55 -0700 | From | "Leonard N. Zubkoff" <> | Subject | Re: SCSI device numbering (was: Re: Ideas for v2.1 |
| |
Date: Wed, 3 Jul 1996 23:00:24 -0400 From: "Theodore Y. Ts'o" <tytso@mit.edu>
Stephen and I have been planning to add an 128-bit universally unique ID (UUID) in the ext2 superblock to help automate this process. It's also useful for his "supermount" for detecting when a removeable disk has really been changed.
How do you generally a globally unique UUID? Simple. Generate a 128 bit UUID as follows:
32 bits tv_sec of volume creation 32 bits tv_usec of volume creation 32 bits IP address of host which created the volume, or a random number if not available 32 bits random number
The basic idea of globally unique ID's is stolen from the DCE RPC, and its predecessor, the Apollo RPC. It's a nice way of picking a universally unqiue ID in a decentralized manner; while there's a chance you might have a collision, it's so small as to be virtually non-existent.
Excellent! And even before UUID's, Apollos used 64 bit UIDs internally for virtually everything. Essentially all interesting objects, be they ephemeral or persistent, were identified by their UID. If I recall correctly, the original UID had 20 or so bits of node ID (guaranteed unique), 40 bits of timestamp, and another 4 bits to avoid collisions. They generalized this to UUIDs somewhat later when Apollo RPC was created. Before Apollo made serious efforts at Unix compatibility in Domain/OS, it was even possible to have an uncatalogued file system object that could only be accessed by its UID.
Leonard
|  |