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

Reply via email to