[OLPC-devel] Announce: Compressed cache 'pre-alpha-001' release :)
Nitin Gupta
nitingupta.mail at gmail.com
Thu Jul 27 15:47:47 EDT 2006
Zach Brown wrote:
>> I need to keep 'struct chunk' as small as possible. This 'test_bit'
>> usage is
>> just super blind copying of page-flags.h :)
>>
>> I think this should do (atomic guarantee not required):
>
> Oh, if you don't need atomicity why not just use a bitfield?
>
> unsigned short free:1,
> size:15;
>
> or whatever. Though I think you'll find that most archs are padding it
> out to be at least an int anyway to avoid unaligned accesses of
> neighbouring members.
Never used 'bitfield' before. I'll surely look into this.
>
>> I couldn't find equivalent error codes with meaning of CC_EEXPAND and
>> CC_EUSED
>> so defined them here. s/CC_ENOMEM/ENOMEM
>
> So have it return > 0 for the expand case?
>
I think, its better to have a consistent interface: -ve is error always,
+ve, 0 is success.
>> chunk_head is given to page_cache_get() before we know it's 'struct
>> page' or
>> 'struct chunk_head' so need to keep name and its position same as for
>> struct
>> page.
>
> Ugh, I missed that detail. That sounds very dangerous and I don't think
> it will be allowed. You should find a better way.
>
Why do you think its 'dangerous'? In very early patches I used a 'struct
page' in place of 'struct chunk_head'. This would have been 'safe' but
that isn't good as sizeof(struct page) is just too big -- metadata size
overhead will explode.
Regards,
Nitin
More information about the Devel
mailing list