Re: [PATCH V2] raid1: ensure write behind bio has less than BIO_MAX_VECS sectors
From: Guoqing Jiang <hidden>
Date: 2021-08-20 08:19:33
Also in:
linux-block
On 8/19/21 4:55 PM, Christoph Hellwig wrote:
On Wed, Aug 18, 2021 at 03:37:38PM +0800, Guoqing Jiang wrote:quoted
for (i = 0; i < disks; i++) { struct md_rdev *rdev = rcu_dereference(conf->mirrors[i].rdev); + + if (test_bit(WriteMostly, &mirror->rdev->flags)) + write_behind = true;How does this condition relate to the ones used for actually calling alloc_behind_master_bio? It looks related, but as someone not familiar with the code I can't really verify if this is correct, so a comment explaining it might be useful.
How about this? + /* + * The write-behind io is only attempted on drives marked as + * write-mostly, which means we will allocate write behind + * bio later. + */ if (test_bit(WriteMostly, &mirror->rdev->flags)) write_behind = true;
quoted
+ /* + * When using a bitmap, we may call alloc_behind_master_bio below. + * alloc_behind_master_bio allocates a copy of the data payload a page + * at a time and thus needs a new bio that can fit the whole payload + * this bio in page sized chunks. + */ + if (write_behind && bitmap) + max_sectors = min_t(int, max_sectors, BIO_MAX_VECS * PAGE_SECTORS);Overly long line here.
I can change it given you still prefer the limitation is 80 characters. Thanks, Guoqing