openzfs-kmod build error

Rick Macklem rmacklem at uoguelph.ca
Tue Jun 23 15:12:50 UTC 2020


Kostya Berger wrote:
>CURRENT r362292
>sysutils/openzfs-kmod build aborts with error:...............
>/usr/ports/sysutils/openzfs-kmod/work/zfs->c0eb5c35e/module/os/freebsd/zfs/zfs_vfsops.c:128:19: error:
>      incompatible pointer types initializing 'vfs_checkexp_t *' (aka 'int (*)(struct
>      mount *, struct sockaddr *, unsigned long *, struct ucred **, int *, int *)') with
>      an expression of type 'int (vfs_t *, struct sockaddr *, int *, struct ucred **, int
>      *, int **)' (aka 'int (struct mount *, struct sockaddr *, int *, struct ucred **,
>      int *, int **)') [-Werror,-Wincompatible-pointer-types]
>        .vfs_checkexp =         zfs_checkexp,
>                                ^~~~~~~~~~~~
>/usr/ports/sysutils/openzfs-kmod/work/zfs->c0eb5c35e/module/os/freebsd/zfs/zfs_vfsops.c:1911:56: error:
>      incompatible pointer types passing 'int *' to parameter of type 'uint64_t *'
>      (aka 'unsigned long *') [-Werror,-Wincompatible-pointer-types]
>        return (vfs_stdcheckexp(zfsvfs->z_parent->z_vfs, nam, extflagsp,
>                                                              ^~~~~~~~~
>/usr/src/sys/sys/mount.h:980:17: note: passing argument to parameter here
>vfs_checkexp_t          vfs_stdcheckexp;
>                        ^
>/usr/ports/sysutils/openzfs-kmod/work/zfs->c0eb5c35e/module/os/freebsd/zfs/zfs_vfsops.c:1912:32: error:
>      incompatible pointer types passing 'int **' to parameter of type 'int *';
>      dereference with * [-Werror,-Wincompatible-pointer-types]
>            credanonp, numsecflavors, secflavors));
>                                      ^~~~~~~~~~
>                                      *
>/usr/src/sys/sys/mount.h:980:17: note: passing argument to parameter here
>vfs_checkexp_t          vfs_stdcheckexp;
>                        ^
>3 errors generated.
>*** Error code 1
>
>Stop.
Post r362158, the argument types change. Since they are just passed to
vfs_stdcheckexp(), all that needs to be done is changing the types of
the arguments.

freqlabs@ volunteered to do this upstream, but I don't know if/when
that gets applied to the port?

If you can fix this, simply replace:
zfs_checkexp(vfs_t *vfsp, struct sockaddr *nam, int *extflagsp,
   struct ucred **credanonp, int *numsecflavors, int **secflavors)

with

zfs_checkexp(vfs_t *vfsp, struct sockaddr *nam, uint64_t *extflagsp,
   struct ucred **credanonp, int *numsecflavors, int *secflavors)

in the two places it exists in zfs_vfsops.c.

rick



With kindest regards,
Kostya Berger

_______________________________________________
freebsd-current at freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"


More information about the freebsd-current mailing list