On 05/17/2017 09:53 AM, Pradeep Jagadeesh wrote:

>>> +#ifdef _WIN64
>>> +
>>> +void qmp_fsdev_set_io_throttle(IOThrottle *arg, Error **errp)
>>> +{
>>> +  return;
>>> +}
>>> +
>>> +IOThrottleList *qmp_query_fsdev_io_throttle(Error **errp)
>>> +{
>>> +    abort();
>>> +}
>>> +
>>> +#endif
>>
>> I think you're missing an addition to monitor.c
>> qmp_unregister_commands_hack() if you intend for this command to be
>> available only on non-windows platforms (and is your #ifdef the correct
>> name, or is this a Linux-only feature rather than a non-windows feature).
> I had to add this one here because, I was getting some error when I
> cross compile for Windows. But I do not have any idea about, do I need
> to add in monitor.c or not.

First point: is fsdev a Linux-only feature, or can it be compiled on
BSD?  If it is Linux-only, then compiling a stub for Windows will still
leave BSD broken, and your #ifdef is wrong.  Fixing compilation on mingw
is nice, but not the only platform to worry about.

Second point: if fsdev is indeed a platform-specific feature, then we
don't want to advertise the QMP commands that are useless when running
on a platform that doesn't support it. Anywhere you have to add a stub
for compilation means you ALSO need to patch monitor.c to unregister the
command from being advertised as a valid QMP command.  (If you used
#ifdef __LINUX__ to guard the working version, and #ifndef __LINUX__ to
declare the stub, then the monitor.c needs an #ifndef section within
qmp_unregister_commands_hack() to tell QMP to not advertise the stubs.)

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to