Ah, I figured out what's going on: the upper limit of special_small_blocks is checked against the currently value of recordsize. But, the pool doesn't actually have a recordsize set at this point, because the pool doesn't even exist. So, the setting that was given immediately before on the command line has no influence.
In short: Create the pool with only -O recordsize=1MB (or whatever) and *then* set the special_small_blocks property after the pool exists: sudo zfs set special_small_blocks=256KB newsrv This isn't ideal but it doesn't really look like an Ubuntu packaging bug. Thanks for rubberducking, launchpad! ** Changed in: zfs-linux (Ubuntu) Status: New => Invalid -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to zfs-linux in Ubuntu. https://bugs.launchpad.net/bugs/2027535 Title: unexpected error message: invalid 'special_small_blocks=262144' property: must be zero or a power of 2 from 512B to 128K Status in zfs-linux package in Ubuntu: Invalid Bug description: Hello, I'm trying to create a new zfs pool using the special allocation vdevs and I get an error message that doesn't make sense to me: cannot create 'newsrv': invalid 'special_small_blocks=262144' property: must be zero or a power of 2 from 512B to 128K $ echo "2 ^ 18" | bc -lq 262144 But the manpage says this number may be up to one megabyte: sarnold@wopr:~ $ PAGER=cat MANWIDTH=70 man -7 --nh --nj zfsprops 2> /dev/null | grep -A8 special_small_blocks special_small_blocks=size This value represents the threshold block size for including small file blocks into the special allocation class. Blocks smaller than or equal to this value will be assigned to the special allocation class while greater blocks will be assigned to the regular class. Valid values are zero or a power of two from 512B up to 1M. The default size is 0 which means no small file blocks will be allocated in the special class. Here is a small demonstration: sarnold@wopr:/tmp $ truncate -s 200MB disk1 sarnold@wopr:/tmp $ truncate -s 200MB disk2 sarnold@wopr:/tmp $ sudo zpool create -O recordsize=1MB -O special_small_blocks=256KB test /tmp/disk1 special /tmp/disk2 cannot create 'test': invalid 'special_small_blocks=262144' property: must be zero or a power of 2 from 512B to 128K sarnold@wopr:/tmp 1 $ sudo zpool create -O recordsize=1MB -O special_small_blocks=128KB test /tmp/disk1 special /tmp/disk2 sarnold@wopr:/tmp $ zpool status test pool: test state: ONLINE config: NAME STATE READ WRITE CKSUM test ONLINE 0 0 0 /tmp/disk1 ONLINE 0 0 0 special /tmp/disk2 ONLINE 0 0 0 errors: No known data errors sarnold@wopr:/tmp $ sudo zpool destroy test sarnold@wopr:/tmp $ And now the actual command I tried: sarnold@wopr:~ $ sudo zpool create -f -O atime=off -O checksum=skein -O compression=zstd-3 -O dedup=skein -O recordsize=1MB -O special_small_blocks=256KB -O xattr=sa newsrv mirror /dev/disk/by-id/ata-WDC_WUH721414ALE604_9RKGP7NC /dev/disk/by-id/ata-WDC_WUH721414ALE604_Z2K012NT mirror /dev/disk/by-id/ata-WDC_WUH721414ALE604_Z2KH01NT /dev/disk/by-id/ata-WDC_WUH721414ALE604_Z2KHG12T special /dev/disk/by-id/ata-Samsung_SSD_870_EVO_4TB_S6PJNS0W312010E /dev/disk/by-id/ata-Samsung_SSD_870_EVO_4TB_S6PJNS0W312031Z /dev/disk/by-id/ata-Samsung_SSD_870_EVO_4TB_S6PJNS0W312033K /dev/disk/by-id/ata-Samsung_SSD_870_EVO_4TB_S6PJNS0W312101T cannot create 'newsrv': invalid 'special_small_blocks=262144' property: must be zero or a power of 2 from 512B to 128K Thanks ProblemType: Bug DistroRelease: Ubuntu 22.04 Package: zfsutils-linux 2.1.5-1ubuntu6~22.04.1 ProcVersionSignature: Ubuntu 5.15.0-70.77-generic 5.15.92 Uname: Linux 5.15.0-70-generic x86_64 NonfreeKernelModules: zfs zunicode zavl icp zcommon znvpair ApportVersion: 2.20.11-0ubuntu82.5 Architecture: amd64 CasperMD5CheckResult: unknown Date: Tue Jul 11 21:27:05 2023 InstallationDate: Installed on 2016-04-04 (2655 days ago) InstallationMedia: Ubuntu-Server 16.04 LTS "Xenial Xerus" - Beta amd64 (20160325) RebootRequiredPkgs: Error: path contained symlinks. SourcePackage: zfs-linux UpgradeStatus: Upgraded to jammy on 2022-08-14 (331 days ago) modified.conffile..etc.sudoers.d.zfs: [inaccessible: [Errno 13] Permission denied: '/etc/sudoers.d/zfs'] To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/2027535/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp