hw/scsi/vhost-scsi.c | 1 + 1 file changed, 1 insertion(+)
From: Quan Sun <Quan.Sun@windriver.com>
On build hosts with kernel headers older than 6.0, the system's
<linux/vhost_types.h> does not define struct vhost_vring_worker or
struct vhost_worker_state, causing compilation of vhost-scsi.c to
fail:
error: storage size of 'vq_worker' isn't known
Fix by including standard-headers/linux/vhost_types.h before the
system's <linux/vhost.h>, matching the existing pattern used in
hw/virtio/vhost-backend.c. QEMU's bundled header provides the
struct definitions, and its include guard prevents redefinition
when the system header pulls in its own vhost_types.h.
Signed-off-by: Quan Sun <Quan.Sun@windriver.com>
---
hw/scsi/vhost-scsi.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
index 699863cc10..10e8fbe503 100644
--- a/hw/scsi/vhost-scsi.c
+++ b/hw/scsi/vhost-scsi.c
@@ -15,6 +15,7 @@
*/
#include "qemu/osdep.h"
+#include "standard-headers/linux/vhost_types.h"
#include <linux/vhost.h>
#include <sys/ioctl.h>
#include "qapi/error.h"
--
2.43.0
On 25/5/26 20:27, Quan.Sun@windriver.com wrote: > From: Quan Sun <Quan.Sun@windriver.com> > > On build hosts with kernel headers older than 6.0, the system's > <linux/vhost_types.h> does not define struct vhost_vring_worker or > struct vhost_worker_state, causing compilation of vhost-scsi.c to > fail: > > error: storage size of 'vq_worker' isn't known > > Fix by including standard-headers/linux/vhost_types.h before the > system's <linux/vhost.h>, matching the existing pattern used in > hw/virtio/vhost-backend.c. QEMU's bundled header provides the > struct definitions, and its include guard prevents redefinition > when the system header pulls in its own vhost_types.h. > > Signed-off-by: Quan Sun <Quan.Sun@windriver.com> > --- > hw/scsi/vhost-scsi.c | 1 + > 1 file changed, 1 insertion(+) Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
On Mon, May 25, 2026 at 11:27:30AM -0700, Quan.Sun@windriver.com wrote: > From: Quan Sun <Quan.Sun@windriver.com> > > On build hosts with kernel headers older than 6.0, the system's > <linux/vhost_types.h> does not define struct vhost_vring_worker or > struct vhost_worker_state, causing compilation of vhost-scsi.c to > fail: > > error: storage size of 'vq_worker' isn't known > > Fix by including standard-headers/linux/vhost_types.h before the > system's <linux/vhost.h>, matching the existing pattern used in > hw/virtio/vhost-backend.c. QEMU's bundled header provides the > struct definitions, and its include guard prevents redefinition > when the system header pulls in its own vhost_types.h. > > Signed-off-by: Quan Sun <Quan.Sun@windriver.com> Hmm. maybe replace linux/vhost.h with standard-headers/linux/vhost.h then? > --- > hw/scsi/vhost-scsi.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c > index 699863cc10..10e8fbe503 100644 > --- a/hw/scsi/vhost-scsi.c > +++ b/hw/scsi/vhost-scsi.c > @@ -15,6 +15,7 @@ > */ > > #include "qemu/osdep.h" > +#include "standard-headers/linux/vhost_types.h" > #include <linux/vhost.h> > #include <sys/ioctl.h> > #include "qapi/error.h" > -- > 2.43.0
On 5/25/26 6:39 PM, Michael S. Tsirkin wrote: > CAUTION: This email comes from a non Wind River email account! > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > On Mon, May 25, 2026 at 11:27:30AM -0700,Quan.Sun@windriver.com wrote: >> From: Quan Sun<Quan.Sun@windriver.com> >> >> On build hosts with kernel headers older than 6.0, the system's >> <linux/vhost_types.h> does not define struct vhost_vring_worker or >> struct vhost_worker_state, causing compilation of vhost-scsi.c to >> fail: >> >> error: storage size of 'vq_worker' isn't known >> >> Fix by including standard-headers/linux/vhost_types.h before the >> system's <linux/vhost.h>, matching the existing pattern used in >> hw/virtio/vhost-backend.c. QEMU's bundled header provides the >> struct definitions, and its include guard prevents redefinition >> when the system header pulls in its own vhost_types.h. >> >> Signed-off-by: Quan Sun<Quan.Sun@windriver.com> > Hmm. maybe replace linux/vhost.h with standard-headers/linux/vhost.h then? Hi Michael, It seems there is no standard-headers/linux/vhost.h in QEMU's tree — only standard-headers/linux/vhost_types.h. The file linux/vhost.h (the kernel header) is still needed here for the vhost-scsi specific definitions (struct vhost_scsi_target, VHOST_SCSI_ABI_VERSION). The approach in this patch matches the existing pattern in hw/virtio/vhost-backend.c, which also includes standard-headers/linux/vhost_types.h before linux/vhost.h to get the struct definitions that may be missing from older host kernel headers. Thanks, Quan >> --- >> hw/scsi/vhost-scsi.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c >> index 699863cc10..10e8fbe503 100644 >> --- a/hw/scsi/vhost-scsi.c >> +++ b/hw/scsi/vhost-scsi.c >> @@ -15,6 +15,7 @@ >> */ >> >> #include "qemu/osdep.h" >> +#include "standard-headers/linux/vhost_types.h" >> #include <linux/vhost.h> >> #include <sys/ioctl.h> >> #include "qapi/error.h" >> -- >> 2.43.0
On Tue, May 26, 2026 at 10:27:57AM -0400, Quan Sun wrote: > > On 5/25/26 6:39 PM, Michael S. Tsirkin wrote: > > CAUTION: This email comes from a non Wind River email account! > > Do not click links or open attachments unless you recognize the sender and know the content is safe. > > > > On Mon, May 25, 2026 at 11:27:30AM -0700,Quan.Sun@windriver.com wrote: > > > From: Quan Sun<Quan.Sun@windriver.com> > > > > > > On build hosts with kernel headers older than 6.0, the system's > > > <linux/vhost_types.h> does not define struct vhost_vring_worker or > > > struct vhost_worker_state, causing compilation of vhost-scsi.c to > > > fail: > > > > > > error: storage size of 'vq_worker' isn't known > > > > > > Fix by including standard-headers/linux/vhost_types.h before the > > > system's <linux/vhost.h>, matching the existing pattern used in > > > hw/virtio/vhost-backend.c. QEMU's bundled header provides the > > > struct definitions, and its include guard prevents redefinition > > > when the system header pulls in its own vhost_types.h. > > > > > > Signed-off-by: Quan Sun<Quan.Sun@windriver.com> > > Hmm. maybe replace linux/vhost.h with standard-headers/linux/vhost.h then? > > Hi Michael, > > It seems there is no standard-headers/linux/vhost.h in QEMU's tree — only > standard-headers/linux/vhost_types.h. The file linux/vhost.h (the kernel > header) is > still needed here for the vhost-scsi specific definitions (struct > vhost_scsi_target, VHOST_SCSI_ABI_VERSION). The approach in this patch > matches the existing pattern in hw/virtio/vhost-backend.c, which also > includes > standard-headers/linux/vhost_types.h before linux/vhost.h to get the struct > definitions that may be missing from older host kernel headers. > > Thanks, > > Quan Alright. > > > --- > > > hw/scsi/vhost-scsi.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c > > > index 699863cc10..10e8fbe503 100644 > > > --- a/hw/scsi/vhost-scsi.c > > > +++ b/hw/scsi/vhost-scsi.c > > > @@ -15,6 +15,7 @@ > > > */ > > > > > > #include "qemu/osdep.h" > > > +#include "standard-headers/linux/vhost_types.h" > > > #include <linux/vhost.h> > > > #include <sys/ioctl.h> > > > #include "qapi/error.h" > > > -- > > > 2.43.0
© 2016 - 2026 Red Hat, Inc.