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