Messages in this thread | | | Date | Thu, 11 Jan 2001 17:19:21 +0100 | From | Manfred Spraul <> | Subject | Re: Compatibility issue with 2.2.19pre7 |
| |
Trond Myklebust wrote: > > > As for the issue of casting 'fh->data' as a 'struct knfsd' then that > is a perfectly valid operation. > No it isn't.
fh->data is an array of characters, thus without any alignment restrictions. 'struct knfsd' begins with a pointer, thus it must be 4 or 8 byte aligned.
The portable 'struct nfs_fh' structure would be
#define NFS_HANDLESIZE 64 struct nfs_fh { unsigned short len; void* data[NFS_HANDLESIZE/sizeof(void*)]; };
But now its too late for such a change - it breaks at least i386, probably all platforms.
Does knfsd actually need all 64 bytes in the nfs_fh? What about aligning the 'struct knfsd' manually?
- struct knfsd* ptr = fh->data; + struct knfsd* ptr = (fh->data+15)&(~15);
That would be kernel only, no ABI problems.
-- Manfred - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |