Re: SCSI device numbering (was: Re: Ideas for v2.1

Leonard N. Zubkoff (lnz@dandelion.com)
Thu, 4 Jul 1996 00:20:55 -0700


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