ZFS volumes block size mismatch between -9 and -10?

Jean-Yves Migeon <[email protected]> Tue, 23 Apr 2024 23:19:39 +0200
Newsgroups gmane.os.netbsd.devel.general
Message-ID <[email protected]>
Greetings,

I just completed a migration from -9 to -10 on a NAS I have running at 
home. Almost everything went well so far -- congratulations everyone, 
and especially releng@ :)

I have a curious issue though dealing with ZFS Volumes exposed to VMs as 
raw disks from the host, through virtio using nodes under /dev/zvol/rdsk/

There seems to be a *8 factor error in their size and access reported 
within the guests (and applies to all rdsk zvols); to illustrate:

host# # uname -a
NetBSD 10.0 (GENERIC) #0: Thu Mar 28 08:33:33 UTC 2024 
[email protected]:/usr/src/sys/arch/amd64/compile/GENERIC amd64

host# zfs create -V 16G fileserver/t1

host# zfs get all fileserver/t1
NAME           PROPERTY              VALUE                  SOURCE
fileserver/t1  type                  volume                 -
fileserver/t1  creation              Tue Apr 23 21:27 2024  -
fileserver/t1  used                  16.5G                  -
fileserver/t1  available             1.19T                  -
fileserver/t1  referenced            34K                    -
fileserver/t1  compressratio         1.00x                  -
fileserver/t1  reservation           none                   default
fileserver/t1  volsize               16G                    local
fileserver/t1  volblocksize          8K                     -
[...]


host# /usr/pkg/bin/qemu-system-x86_64 -accel nvmm [...] \
         -drive 
format=raw,file=/dev/zvol/rdsk/fileserver/t1,if=virtio,index=1

In guest:

guest# uname -a
Linux 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux

guest# fdisk -l
Disk /dev/vdc: 2 GiB, 2147483648 bytes, 4194304 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Latest qemu (compiled either under -9 or -10) lead to the same result.

That looks like a 512 vs 4k sector "change", however I would like to 
hear from others more knowledgeable than me in fs matters. FWIW here are 
logs for an actual 64G raw disk before and after the migration (logs 
extracted from guest):

avril 06 02:40:16 timemachine kernel: virtio_blk virtio2: [vdb] 
134217728 512-byte logical blocks (68.7 GB/64.0 GiB)
=>
avril 23 22:09:35 timemachine kernel: virtio_blk virtio2: [vdb] 16777216 
512-byte logical blocks (8.59 GB/8.00 GiB)

Cheers,

-- 
Jean-Yves Migeon
jym@