On Mon, Jan 07, 2008 at 11:34:07AM +0100, Bastian Blank wrote: > On Mon, Jan 07, 2008 at 03:23:23AM -0500, Theodore Tso wrote: > > So, I am doing so now. Any objections if I > > add a dependency on passwd for libuuid1? The aternative would be to > > roll-my-own useradd/adduser functionality, but that would be a real > > PITA.... > > There are several other possibilities: > - Move the user creation. It is necessary for uuid-runtime (uuidd), not > libuuid.
It's actually needed in libuuid, because one of the modes how it can be used is a program can be setgid libuuid. If so, then when it calls libuuid, it can optionally save the clock sequence number in /var/lib/libuuid, and to detect circumstances when the clock goes backwards. This guarantees that uniqueness, and makes the UUID generation compliant with RFC 4122. Without libuuid being setgid, or without the uuidd package installed, the time-based UUID will *probably* be unique, but if the time gets reset, and you get very. Very unlucky, or if you have multiple SMP threads generating huge numbers of time-based UUID's, you could generate duplicate UUID's. > What is the reason for this deamon anyway? It linearises the requests > and limits the amount of available uuids. So there are some programs that like to use time-based UUID's because they tend to sort much better (particularly if you byte-reverse the UUID) when they are used as keys in a database. One such program generates a *huge* number of them while initializing its application database. It does so in multiple threads and multiple processes running in parallel, and it was running into problems because it could end up generating duplicate UUID's. The uuidd linearises the requests, yes, but in a very clever way where each particular thread can request a block of UUID's (with contiguous times) so it actually allows a much, MUCH larger number of UUID's to be generated, with *significantly* less CPU overhead. I know of only one application program that generates this many UUID's (as in tens of thousands per second). Unless you use this application, it's relatively unlikely that you need it; however, it is a matter of correctness as well --- if you want to guarantee uniqueness on an SMP system, and guarantee uniqueness in the face of an unreliable clock that might go backwards, implementing the requirements of RFC 4122, it's necessary. By default though most applications use random UUID's, for which none of this rigamarole is necessary. So without uuidd installed, the amount of time to generate 100,000 UUID's is 3.2 seconds. With uuidd installed, the amount of time to generate 100,000 UUID's drops down to 0.091 seconds. - Ted -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]