Coda File System

Re: Continued: 64-bit issues

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Fri, 6 Aug 2004 14:13:21 -0400
On Tue, Aug 03, 2004 at 04:59:44PM +0200, Michael Tautschnig wrote:
> As I took a closer look into the sources, I got pretty sure, that my
> problem lies in the different pointer-sizes when having a 32-bit userland
> and a 64-bit kernel. Could somebody confirm that?
> 
> The structs ViceIoctl and PioctlData both contain pointers - but what
> would be a good solution for that problem?

I don't like the passing of pointers and it looks like Greg's suggestion
is really the easiest way to do work around this right now.

There is some messing around with the cmd field of the ioctl. Userspace
(cfs/hoard) passes a path to an object and a blob of data and seems to
add in the size of the char* as well as the integer follow flag, the
kernel then subtracts these again before passing the data on to venus.
This is kind of weird because the original data passed to the ioctl was
struct PioctlData and not the struct ViceIoctl which is forwarded to
venus.

Although struct coda_ioctl_in, coda_ioctl_out and coda_readlink_out have
char*/caddr_t values as well, these are not actually pointers that are
passed on to venus but it looks like they contain the offset from the
start of the struct and the actual data is packed similar to how a
dirent is packed by readdir.

Jan
Received on 2004-08-06 14:15:01