On 2/25/25 09:54, Harry Yoo wrote:
> On Fri, Feb 14, 2025 at 05:27:43PM +0100, Vlastimil Babka wrote:
>> The possibility of many barn operations is determined by the current
>> number of full or empty sheaves. Taking the barn->lock just to find out
>> that e.g. there are no empty sheaves results in unnecessary overhead and
>> lock contention. Thus perform these checks outside of the lock with a
>> data_race() annotated variable read and fail quickly without taking the
>> lock.
>> 
>> Checks for sheaf availability that racily succeed have to be obviously
>> repeated under the lock for correctness, but we can skip repeating
>> checks if there are too many sheaves on the given list as the limits
>> don't need to be strict.
>> 
>> Signed-off-by: Vlastimil Babka <vba...@suse.cz>
> 
> Looks good to me,
> Reviewed-by: Harry Yoo <harry....@oracle.com>
> 
> in kmem_cache_return_sheaf:
>> if (!pcs->spare) {                                                      
>>      pcs->spare = sheaf;                                             
>>      sheaf = NULL;                                                   
>> } else if (pcs->barn->nr_full >= MAX_FULL_SHEAVES) {                    
>>      /* racy check */                                                
>>      barn = pcs->barn;                                               
>>      keep = true;                                                    
>> }  
> 
> By the way this code also needs data_race()?

Right, will add, thanks.



Reply via email to