sbitmap: don't update the allocation hint on clear after resize
If we have a bunch of high-numbered bits allocated and then we resize the struct sbitmap_queue, when those bits get cleared, we'll update the hint and then have to re-randomize it repeatedly. Avoid that by checking that the cleared bit is still a valid hint. No measurable performance difference in the common case. Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
		
				
					committed by
					
						 Jens Axboe
						Jens Axboe
					
				
			
			
				
	
			
			
			
						parent
						
							05fd095d53
						
					
				
				
					commit
					5c64a8df0c
				
			| @@ -321,7 +321,7 @@ void sbitmap_queue_clear(struct sbitmap_queue *sbq, unsigned int nr, | ||||
| { | ||||
| 	sbitmap_clear_bit(&sbq->sb, nr); | ||||
| 	sbq_wake_up(sbq); | ||||
| 	if (likely(!sbq->round_robin)) | ||||
| 	if (likely(!sbq->round_robin && nr < sbq->sb.depth)) | ||||
| 		*per_cpu_ptr(sbq->alloc_hint, cpu) = nr; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(sbitmap_queue_clear); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user