New code for 5.16: * Bug fixes and cleanups for kernel memory allocation usage, this time without touching the mm code. * Refactor the log recovery mechanism that preserves held resources across a transaction roll so that it uses the exact same mechanism that we use for that during regular runtime. * Fix bugs and tighten checking around btree heights. * Remove more old typedefs. * Fix perag reference leaks when racing with growfs. * Remove unused fields from xfs_btree_cur. * Allocate various scrub structures on the heap to reduce stack usage. * Pack xfs_btree_cur fields and rearrange to support arbitrary heights. * Compute maximum possible heights for each btree height, and use that to set up slab caches for each btree type. * Finally remove kmem_zone_t, since these have always been struct kmem_cache on Linux. * Compact the structures used to coordinate work intent items. * Set up slab caches for each work intent item type. * Rename the "bmap_add_free" function to "free_extent_later", which more accurately describes what it does. * Fix corruption warning on unmount when a CoW preallocation covers a data fork delalloc reservation but then the CoW fails. * Add some more minor code improvements.