Hi I'm trying to use the Linux extract utility on a .vbk file currently stored on ZFS, to extract the contents onto another ZFS drive. Both are set up with 4k sectors (ashift 12). However when I run the extract utility I get:
Invalid argument
Asynchronous request operation has failed. [size = 512] [offset = 0] [bufaddr = 0x00000000150e9800] [res = -22; 0]
--tr:Exception in CWaitableStgExtentAsyncTask::Wait
Failed to open storage for read access. Storage: [file name redacted].
--tr:Failed to open storage [HostFS:///file name redacted] ticket of external storage [{00000000-0000-0000-0000-000000000000}]
--tr:Failed to open storage tickets
--tr:Failed to list items in the storage [file name redacted].
From what I can tell the issue is that extract is trying to open the file with 512 byte async IO on a 4k disk.
Well, solved it literally 3 minutes after posting this. It has to do with direct IO in ZFS 2.3.0. Setting direct=always or direct=disabled fixes it. See https://github.com/openzfs/zfs/issues/16953.