On 1.9.20. 15:06, Peter Maydell wrote:
On Mon, 31 Aug 2020 at 12:08, Laurent Vivier <laur...@vivier.eu> wrote:
The following changes since commit 39335fab59e11cfda9b7cf63929825db2dd3a3e0:

   Merge remote-tracking branch 'remotes/vivier2/tags/linux-user-for-5.2-pull-=
request' into staging (2020-08-28 22:30:11 +0100)

are available in the Git repository at:

   git://github.com/vivier/qemu.git tags/linux-user-for-5.2-pull-request

for you to fetch changes up to d6676fc62a52e020df32abf927c2e7183781a2e3:

   linux-user: Add support for btrfs ioctls used to scrub a filesystem (2020-0=
8-29 10:14:52 +0200)

----------------------------------------------------------------
Add btrfs support
Fails to build with clang, I'm afraid:

In file included from ../../linux-user/syscall.c:4561:
../../linux-user/syscall_types.h:485:33: error: implicit conversion
from enumeration type 'enum btrfs_dev_stat_values' to different
enumeration type 'argtype' (aka 'enum argtype')
[-Werror,-Wenum-conversion]
        MK_ARRAY(TYPE_ULONGLONG, BTRFS_DEV_STAT_VALUES_MAX), /* values */
        ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/petmay01/linaro/qemu-for-merges/include/exec/user/thunk.h:45:42:
note: expanded from macro 'MK_ARRAY'
#define MK_ARRAY(type, size) TYPE_ARRAY, size, type
                                          ^~~~
../../linux-user/syscall.c:4559:79: note: expanded from macro 'STRUCT'
#define STRUCT(name, ...) static const argtype struct_ ## name ##
_def[] = {  __VA_ARGS__, TYPE_NULL };

     ~  ^~~~~~~~~~~
1 error generated.

There seems to be a problem because 'BTRFS_DEV_STAT_VALUES_MAX' is not a predefined value but an enum value from from 'enum btrfs_dev_stat_values':

https://elixir.bootlin.com/linux/latest/source/include/uapi/linux/btrfs.h#L668

The build problem arises probably when 'thunk_convert()' tries to convert this enum value to the thunk enum values 'argtype'. I will see about finding a work around for this or maybe use a STRUCT_SPECIAL() for 'struct btrfs_ioctl_get_dev_stats' to define an explicit converting function.

Just curious, on what linux distro are you building on? I didn't come accross this build issue on my system.


thanks
-- PMM


Reply via email to