On Fri, 13 Dec 2024 at 11:04, Paolo Bonzini <pbonz...@redhat.com> wrote:
>
> 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?

Hi Ronnie,
This libnfs nfs_pread_async() API change breaks the QEMU build. This
email thread discusses holding off on updating libnfs 5 -> 6 in
Fedora, but the update has already happened in Homebrew so the QEMU
macOS CI is now failing:
https://gitlab.com/qemu-project/qemu/-/jobs/8646124898

Do you plan to release a new libnfs version that restores API
compatibility or has the ship sailed and applications need to detect
this at compile time?

Thanks,
Stefan

Reply via email to