The recent rework on implementing support to read disk/partition size from
partition table and implementing more strict validation for reads in biosdisk.c
did reveal the problem with open_disk cache. To save the memory and based on
the fact that with ufs there was only one file system reader active at the time,
the open_disk data was cached and shared. The cache implementation is still
there and active, however, it really does not do any good in case of zfs,
because the disk devices are always open with pools.
Moreover, sharing the open disk info in case of multiple file systems on the
same disk can render the pool unreadable because the last partition size will
be stored in open_disk structure and since this structure is shared, the pool
IO will be limited to the last partition size.
The fix is relatively simple and straight forward - we just remove the cache
part, ensuring every opened disk device will get its own private instance of
open disk info and the structure data will not be disturbed.