Re: [RFC for-next v2 3/4] block/bio: add pcpu caching for non-polling bio_put

From: Pavel Begunkov
Date: Thu Oct 20 2022 - 08:27:46 EST


On 10/20/22 09:31, Christoph Hellwig wrote:
+ unsigned long flags;
cache = per_cpu_ptr(bio->bi_pool->cache, get_cpu());
bio_uninit(bio);
@@ -737,12 +776,15 @@ static inline void bio_put_percpu_cache(struct bio *bio)
cache->free_list = bio;
cache->nr++;
} else {
- put_cpu();
- bio_free(bio);
- return;
+ local_irq_save(flags);
+ bio->bi_next = cache->free_list_irq;
+ cache->free_list_irq = bio;
+ cache->nr_irq++;
+ local_irq_restore(flags);
}

Ok, I guess with that my previous comments don't make quite
as much sense any more. I think youcan keep flags local in

Yeah, a little bit of oracle coding

the branch here, though.

Not like it makes any difference but can move it

--
Pavel Begunkov