Coda File System

Re: 64-bit issues

From: Michael Tautschnig <michael.tautschnig_at_zt-consulting.com>
Date: Mon, 9 Aug 2004 03:09:07 +0200 (CEST)
>
> Similar change in ViceIoctl, caddr_t -> u_int64_t.
>
> The caddr_t and char* fields in coda_ioctl_in coda_ioctl_out and
> coda_readlink_out are not actual pointers, and probably should be
> replaced with u_int32_t. I just found a (funny) comment in
> coda-src/venus/worker.cc,
>
>     /* readlink.data is an offset, with the wrong type .. sorry */
>
> You probably need to add (or remove) casts to fix some compiler errors
> when rebuilding venus with these changes.

Well, I did all the necessary changes - but the result stayed the same; so
I did some more debugging and got to the following results:

- 32-bit ioctls on sparc64, parisc, s390x, ppc64, x86_64 won't work with
the current coda-kernel-code, since compat_sys_ioctl needs the ioctls to
be registered using register_ioctl32_conversion
- I added those calls and the necessary conversion-function to psdev.c -
registering _VICEIOCTL(0) - _VICEIOCTL(255)
- that didn't help either, since the size-part of the ioctl-cmd is
modified in kerndep/pioctl.c - and thus the registered ioctls are useless.

So my question is: Why is this modification necessary? Couldn't _VICEIOCTL
simply be modified to use "struct PioctlData" instead of "struct
ViceIoctl"?

Regards,
Michael
Received on 2004-08-08 21:14:58