This is the mail archive of the cygwin-developers@cygwin.com mailing list for the Cygwin project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 11 May 2003 14:07:14 +1000, "Robert Collins" <rbcollins@cygwin.com>
said:
> Yah. And chris's work to use the native NT inode information will remove
> the chance of hash collisions completely. We will need with a 72 bit
> key_t, or a lookaside table. FWIW I think a lookaside table may not be
> worth the work (*). (I've changed my mind :})
>
> Note: You'll need cygserver running if you use a lookaside table. It
> won't be doing any ipc logic, just maintaining the persistent
> key<->inode translation.
>
> (*) st_dev may not be needed in the key once we are using the native
> inode values - IF the NT upper 64 bits are the filesystem ID. IF they
> are, then we have the native device id already in the key so our key
> becomes
>
> struct {
> native_inode_t inode;
> u_short keyid;
> };
Unfortunately, the NT upper bits are not the filesystem ID, according to
Corinna's investigation. So, we need dev_t, too. And besides, the
struct idea is a really really bad, IMO. People expect key_t to be a
primitive, don't they? Sure, key1 < key2 doesn't mean anything, but key1
== key2 ought to be meaningful. So, you'd have to implement operator==,
which makes key_t a class, not a struct.
But that kills packing (e.g. a key_t object is no longer '72 bits of id
data') because key_t now has vtables, ctor, dtor, etc etc. I *really*
don't like the idea of making key_t a non-primitive type. Why should we
-- linux doesn't, and they've decided to live with aliasing into 32bits.
Surely we can live with a 64bit space, and its one billion times lower
probability of clashing?
What do you think of the attached patch? (The comments explain my
rationale).
--Chuck
--
Charles Wilson
cygwin at removespam cwilson dot fastmail dot fm
Attachment:
64bit_keyt.chg
Description: application/unknown
Attachment:
64bit_keyt.patch
Description: application/unknown
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |