From: Lars Braeuer (lbraeuer_at_mpex.net)
Date: Mon 29 Mar 2004 - 14:47:00 BST
Herbert Poetzl wrote:
> On Mon, Mar 29, 2004 at 01:58:57PM +0200, Lars Braeuer wrote:
>>Herbert Poetzl wrote:
>>>>What would be the right formula for reassembling the id's for vs1.27 +
>>>currently the best format would probably be UID24/GID24
>>>#define XIDINO_UID(uid, xid) (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) <<
>>>#define XIDINO_GID(gid, xid) (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) <<
>>>which basically means that the upper 8 bit of (16 bit) xid
>>>go into the upper 8 bit of the (32 bit) uid, and the lower
>>>8 bit of the xid, into the upper 8 bit of the (32 bit) gid
>>>but probably simpler would be the transition to UID32/GID16
>>>because in this setup, you only have to mask the 'old' uid
>>>to 16 bit, and leave the gid untouched ...
>>You mean the uid will remain untouched, since the xid goes
>>into the upper 16 bit of the gid, correct or am I making a
> no, in the old format, both uid and gid contain redundant
> information, where GID16 is equivalent for gid, it doesn't
> touch the uid, so removing the upper 16 bit from the uid
> would be sufficient, which might be easier than getting all
> the math right ...
Ah ok, I understand.
>>Well if UID24/GID24 is the recommended format, then converting
>>both values (uid/gid) should be as easy as converting a single
>>one (gid), I hope. ;)
> well, you have to split up the xid, combine the parts with
> the uid/gid, and store both back, where in the other case,
> a masking of the uid to 16 bit is sufficient, YMMV
Isn't this done by supplying uid and xid to XIDINO_UID?
The function then returns a formatted uid, right?
Another question about the CONFIG_INOXID_GID24 part in vxid.h:
Why is it "<< 16", wouldn't this store the first 8 bit of the xid in the upper 16 bit of the uid
leaving the last 8 bit unused?
#define XIDINO_UID(uid, xid) (((uid) & 0xFFFFFF) | (((xid) & 0xFF00) << 16))
#define XIDINO_GID(gid, xid) (((gid) & 0xFFFFFF) | (((xid) & 0x00FF) << 24))
Vserver mailing list