Thread (7 messages) flat view 7 messages, 3 authors, 2021-08-23

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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help