[Ocfs2-devel] [PATCH 3/3] Add inode stealing for ocfs2_reserve_new_inode.V3

Tao Ma tao.ma at oracle.com
Mon Mar 3 18:45:52 PST 2008


Sunil Mushran wrote:
> Change comment to:
> /* Start to steal inodes from the first slot after ours. */
> 
>> +    if (slot == OCFS2_INVALID_SLOT)
>> +        slot = osb->slot_num + 1;
>> +
>> +    for (i = 0; i < osb->max_slots; i++, slot++) {
>> +        if (slot == osb->max_slots)
>> +            slot = 0;
>> +
>> +        if (slot == osb->slot_num)
>> +            continue;
>> +
>> +        status = ocfs2_reserve_suballoc_bits(osb, ac,
>> +                             INODE_ALLOC_SYSTEM_INODE,
>> +                             slot, NOT_ALLOC_NEW_GROUP);
>> +        if (status >= 0) {
>> +            ocfs2_set_inode_steal_slot(osb, slot);
>> +            break;
>> +        }
>> +
>> +        ocfs2_free_ac_resource(ac);
>> +    }
>> +
>> +    return status;
>> +}
>> +
> if (slot == OCFS2_INVALID_SLOT)
> slot = (osb->slot_num + 1 == osb->max_slots) ? 0 : osb->slot_num + 1;
> 
> while (slot != osb->slot_num) {
> status = ocfs2_reserve_suballoc_bits(osb, ....);
> ...
> ocfs2_free_ac_resource(ac);
> slot = (slot + 1 == osb->max_slots) ? 0 : slot + 1;
> }
> 
> Not that your code is incorrect. Other option is to not use "i"
> and replace continue with a break.
I use "i" because I am always worried about if I can't handle the 
condition carefully. :( So you think using "i" is not gracefully, or not 
easy to understand, or any other reason?
> 
>>  int ocfs2_reserve_new_inode(struct ocfs2_super *osb,
>>                  struct ocfs2_alloc_context **ac)
>>  {
>>      int status;
>> +    s16 slot = ocfs2_get_inode_steal_slot(osb);
>> +#define OCFS2_INODE_STEAL_TIMES 10
>> +    static atomic_t inode_steal_times = ATOMIC_INIT(0);
> 
> Can you rename inode_steal_times to num_inodes_stolen. BTW, this
> will be for all mounts which is not what we want. Why don't you
> add this to ocfs2_super? s_num_inodes_stolen. In that case, protect
> it using osb_lock.
I forget about this issue and used to think of it is only used in this 
function. :( I Will modify it. Thanks.




More information about the Ocfs2-devel mailing list