Hi,
在 2025/06/23 11:18, Wang Jinchao 写道:
Comparing mempool_create_kmalloc_pool() and mempool_create(), the former
requires the pool element size as a parameter, while the latter uses
r1bio_pool_alloc() to allocate new elements, with the size calculated
based on poolinfo->raid_disks.
The key point is poolinfo, which is used for both r1bio_pool and
r1buf_pool.
If we change from mempool_create() to mempool_create_kmalloc_pool(), we
would need to introduce a new concept, such as r1bio_pool_size, and
store it somewhere. In this case, the original conf->poolinfo would lose
its meaning and become just r1buf_poolinfo.
So I think keeping poolinfo is a better fit for the pool in RAID1.
I said multiple times it's a fixed size and won't change, you don't need
to store it. Not sure if you get this. :(
conf->r1bio_pool = mempool_create_kmalloc_pool(NR_RAID_BIOS,
offsetof(struct r1bio, bios[mddev->raid_disks *2]);
Thanks,
Kuai