Are you missing the header bits for linux_statfs64?  I don't see where
it's defined.

> +       /*
> +        * Convert BSD filesystem names to Linux filesystem type numbers
> +        * where possible.  Linux statfs uses a value of -1 to indicate
> +        * an unsupported field.
> +        */
> +       if (!strcmp(bsp->f_fstypename, MOUNT_FFS) ||
> +           !strcmp(bsp->f_fstypename, MOUNT_MFS))
> +               lsp->l_ftype = 0x11954;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_NFS))
> +               lsp->l_ftype = 0x6969;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_MSDOS))
> +               lsp->l_ftype = 0x4d44;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_PROCFS))
> +               lsp->l_ftype = 0x9fa0;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_EXT2FS))
> +               lsp->l_ftype = 0xef53;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_CD9660))
> +               lsp->l_ftype = 0x9660;
> +       else if (!strcmp(bsp->f_fstypename, MOUNT_NCPFS))
> +               lsp->l_ftype = 0x6969;
> +       else
> +               lsp->l_ftype = -1;

Can this code go into a separate function so we don't have to
duplicate it for both statfs and statfs64?

> +int
> +linux_sys_statfs64(struct proc *p, void *v, register_t *retval)
> +{
> +       struct linux_sys_statfs64_args /* {
> +               syscallarg(char *) path;
> +               syscallarg(struct linux_statfs *) sp;
> +       } */ *uap = v;

The comment is wrong: sp should be linux_statfs64.

> -268    UNIMPL          linux_sys_statfs64
> +268    STD             { int linux_sys_statfs64(char *path, \
> +                           struct linux_statfs64 *sp); }
>  269    UNIMPL          linux_sys_fstatfs64

It looks like linux_sys_fstatfs64 should be easy to implement too now
if you wanted to do that in this diff as well.

Reply via email to