On Sun, Mar 17, 2024 at 09:39:01PM -0700, Christoph Hellwig wrote: > On Sun, Mar 17, 2024 at 09:34:36PM -0700, Darrick J. Wong wrote: > > > select few file systems doesn't seem very efficient. Given that we > > > very rarely update it and thus concurrency on the write side doesn't > > > matter much, is there any way we could get a away with a fs-wide > > > lookup data structure and avoid this? > > > > Only if you can hand a 128-bit key to an xarray. ;) > > That's why I said lookup data structure and not xarray. It would > probably work with an rthashtable. Heh. Well willy gave me the idea to use an xarray so I'd then know how to use an xarray. :) > > But in all seriousness, we could have a per-AG xarray that maps > > xfs_agino_t to this xarray of merkle blocks. That would be nice in that > > we don't have to touch xfs_icache.c for the shrinker at all. > > I have to admit I haven't read the code enough to even know from > what to what it maps. I'll try to get a bit deeper into the code, > time permitting. fsverity flattens the blocks of the merkle tree into a linear u64 byte-address space. The accesses are in those same units, which is why I end up shifting so that the xarray entries for adjacent blocks are contiguous. Kind of like what the address_space does. --D