> @@ -377,6 +391,19 @@ int fsverity_read_merkle_tree_block(struct inode *inode, > > block->pos = pos; > block->size = params->block_size; > + block->verified = false; > + > + if (vops->read_merkle_tree_block) { > + struct fsverity_readmerkle req = { > + .inode = inode, > + .ra_bytes = ra_bytes, > + }; > + > + err = vops->read_merkle_tree_block(&req, block); > + if (err) > + goto bad; > + return 0; I still don't understand why we're keeping two interfaces instead of providing a read through pagecache helper that implements the ->read_block interface. That makes the interface really hard to follow and feel rather ad-hoc. I also have vague memories of providing such a refactoring a long time ago.