[Ocfs2-devel] [PATCH 1/1] ocfs2: add extent block stealing for ocfs2

Sunil Mushran sunil.mushran at oracle.com
Thu Jan 21 18:12:53 PST 2010


Joel Becker wrote:
> On Thu, Jan 21, 2010 at 05:42:55PM +0800, Tiger Yang wrote:
>   
>> -static inline void ocfs2_set_inode_steal_slot(struct ocfs2_super *osb,
>> -					      s16 slot)
>> +static inline void ocfs2_init_meta_steal_slot(struct ocfs2_super *osb)
>>  {
>>  	spin_lock(&osb->osb_lock);
>> -	osb->s_inode_steal_slot = slot;
>> +	osb->s_meta_steal_slot = OCFS2_INVALID_SLOT;
>>  	spin_unlock(&osb->osb_lock);
>> +	atomic_set(&osb->s_num_meta_stolen, 0);
>> +}
>>     
>
> 	Doesn't need to be inline.  Put it in suballoc.c.
>
>   
>> +static inline void ocfs2_set_steal_slot(struct ocfs2_super *osb,
>> +					int slot, int type)
>> +{
>> +	spin_lock(&osb->osb_lock);
>> +	if (type == INODE_ALLOC_SYSTEM_INODE)
>> +		osb->s_inode_steal_slot = slot;
>> +	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
>> +		osb->s_meta_steal_slot = slot;
>> +	spin_unlock(&osb->osb_lock);
>> +}
>>     
>
> 	Doesn't need to be inline.  Put it in suballoc.c and put an __
> in front of it.
>
>   
>> -static inline s16 ocfs2_get_inode_steal_slot(struct ocfs2_super *osb)
>> +static inline int ocfs2_get_steal_slot(struct ocfs2_super *osb, int type)
>>  {
>> -	s16 slot;
>> +	int slot = OCFS2_INVALID_SLOT;
>>  
>>  	spin_lock(&osb->osb_lock);
>> -	slot = osb->s_inode_steal_slot;
>> +	if (type == INODE_ALLOC_SYSTEM_INODE)
>> +		slot = osb->s_inode_steal_slot;
>> +	else if (type == EXTENT_ALLOC_SYSTEM_INODE)
>> +		slot = osb->s_meta_steal_slot;
>>  	spin_unlock(&osb->osb_lock);
>>  
>>  	return slot;
>>  }
>>     
>
> 	Again regarding unline and __ prefix.

All this is good.

The get and set routines are a bit convoluted. I agree with the hiding 
of the
type by adding ocfs2_steal_meta() and  ocfs2_steal_inode(). But the get/set
routines will be better off just accepting the type.

Right now the flow is:

ocfs2_steal_resource()
+                       if (type == INODE_ALLOC_SYSTEM_INODE)
+                               ocfs2_set_inode_steal_slot(osb, slot);

ocfs2_set_inode_steal_slot()
+       return ocfs2_set_steal_slot(osb, slot, INODE_ALLOC_SYSTEM_INODE);

ocfs2_set_steal_slot()
+       if (type == INODE_ALLOC_SYSTEM_INODE)
+               osb->s_inode_steal_slot = slot;

Sunil



More information about the Ocfs2-devel mailing list