lkml.org 
[lkml]   [2001]   [Jan]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: 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/

    \
     
     \ /
      Last update: 2005-03-22 13:28    [W:0.037 / U:59.412 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site