On 12/13/24 16:51, Richard W.M. Jones wrote:
The libnfs asynch API has changed type signature in this new version.
This change breaks qemu and it wasn't immediately obvious to me how to
fix it. In particular the new API requires a buffer to be passed, but
it's unclear what that would be.
Old signature:
EXTERN int nfs_pread_async(struct nfs_context *nfs, struct nfsfh *nfsfh,
uint64_t offset, uint64_t count, nfs_cb cb,
void *private_data);
New signature:
EXTERN int nfs_pread_async(struct nfs_context *nfs, struct nfsfh *nfsfh,
void *buf, size_t count, uint64_t offset,
nfs_cb cb, void *private_data);
(Similar changes are made to pwrite_async)
Looks like the buffer used to be allocated by libnfs and passed to
nfs_co_generic_cb:
static void
nfs_co_generic_cb(int ret, struct nfs_context *nfs, void *data,
void *private_data)
Now it has to be allocated by the application.
(upstream commit https://github.com/sahlberg/libnfs/commit/5e8f7ce273308)
I guess this needs upstream qemu attention.
And should it also block the libnfs update in Fedora, since QEMU is a
critical package?
Paolo