Thread (30 messages) 30 messages, 6 authors, 2024-12-17

Re: [RFC v2 02/11] fs/buffer: add a for_each_bh() for block_read_full_folio()

From: Luis Chamberlain <mcgrof@kernel.org>
Date: 2024-12-16 20:05:54
Also in: linux-fsdevel, linux-mm, linux-xfs

On Mon, Dec 16, 2024 at 10:56:44AM -0800, Luis Chamberlain wrote:
On Sat, Dec 14, 2024 at 04:02:53AM +0000, Matthew Wilcox wrote:
quoted
On Fri, Dec 13, 2024 at 07:10:40PM -0800, Luis Chamberlain wrote:
quoted
-	do {
+	for_each_bh(bh, head) {
 		if (buffer_uptodate(bh))
 			continue;
 
@@ -2454,7 +2464,9 @@ int block_read_full_folio(struct folio *folio, get_block_t *get_block)
 				continue;
 		}
 		arr[nr++] = bh;
-	} while (i++, iblock++, (bh = bh->b_this_page) != head);
+		i++;
+		iblock++;
+	}
This is non-equivalent.  That 'continue' you can see would increment i
and iblock.  Now it doesn't.
Thanks, not sure how I missed that! With that fix in place I ran a full
baseline against ext4 and all XFS profiles.

For ext4 the new failures I see are just:

  * generic/044
  * generic/045
  * generic/046
Oh my, these all fail on vanilla v6.12-rc2 so its not the code which is
at fault.

 Luis
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help