9318 vol_volsize_to_reservation does not account for raidz skip blocks

Review Request #1997 — Created June 13, 2019 and submitted — Latest diff uploaded


This makes it so that refreservation=auto causes the refreservation to be sized based on the least efficient top-level vdev in the pool.

  • Performed a full run of zfstest on a baseline (pkg://omnios/entire@11-151031.0:20190603T195911Z) and on new bits. No new failures were observed. Note that some tests caused zfs-on-zfs deadlock in the baseline so I commented those tests.
  • Added new tests to cover new functionality. They pass with 3 disks, with 14+ disks, with 512 byte or 4096 sectors. 512x3 512x20 4096x3 4096x20
  • Created raidz{1,2,3} pools with various numbers of 4Kn disks, created volumes with various values for volblocksize, then filled the volumes. Verified that referenced never exceeded refreservation and that refreservation was unreasonbly high. results
  • Did volume overwrite test on a bunch of other whacky multi-raidz{1,2,3} and mirror combo pools. results
  • While testing volblocksize=512 on ashift=9 pools, I found that things are whack even in the baseline. See illumos#11237.