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