[pnfs] Re: [nfsv4] Bakeathon and NFSv4.1 testing

Lisa Week Lisa.Week at Sun.COM
Fri Sep 8 18:04:45 EDT 2006


Hi Andy,

Sorry for the delay.  Responses inline...

Thanks,
Lisa

William A.(Andy) Adamson wrote:

>hi lisa
>
>so we've  moved our Linux pnfs client and server to  
>http://www.nfsv4-editor.org/draft05/nfs41_prot.x with a couple of differences. 
>could you please comment on how your xdr compares?
>  
>

We are also using http://www.nfsv4-editor.org/draft05/nfs41_prot.x

>1) draft05 incorrectly declares fattr4_fs_layout_type and fattr4_layout_type 
>as a single layouttype4 - these should both be opaque.
>
>typedef layouttype4	fattr4_fs_layout_type;
>typedef layouttype4	fattr4_layout_type;
>
>should be:
>typedef layouttype4<>	fattr4_fs_layout_types;
>typedef layouttype4<>	fattr4_layout_types;
>  
>

We are also using:
typedef    layouttype4    fattr4_fs_layout_types<>;
typedef    layouttype4    fattr4_layout_types<>;

>we've only implemented fattr4_fs_layout_types and we've implemented the opaque 
>list.
>
>  
>
We have also only implemented fattr4_fs_layout_types (*).

Our server does not implement and won't advertise support for any of the 
other attributes (fattr4_layout_alignment, fattr4_layout_blksize, 
fattr4_layout_hint, fattr4_layout_types, fattr4_mdsthreshold) at Bakeathon.

(*) Right now, our server does advertise support for 
fattr4_fs_layout_types, but it is not actually supported.  We will be 
working to get this supported by the time we start testing.

>2) we currently have not moved to the 3-word getattr bitmap required to hold 
>the 63 plus attributes. have you?
>  
>
Nope.

>3) we have left the clientid in layoutget - i suspect you have removed it :)
>  
>

Nope, we still have the clientid in LAYOUTGET4args.

Actually, we also have the clientid in LAYOUTRETURN4args and 
LAYOUTCOMMIT4args as well.  Would you be able to comment on that?

Here are the definitions that we are using:

struct LAYOUTCOMMIT4args {
        /* CURRENT_FH: file */
        clientid4             clientid;
        offset4               offset;
        length4               length;
        bool                  reclaim;
        newoffset4              last_write_offset;
        newtime4                time_modify;
        newtime4                time_access;
        layoutupdate4           layoutupdate;
};

struct LAYOUTRETURN4args {
        /* CURRENT_FH: file */
        clientid4             clientid; /* For testing purposes */
        bool                  reclaim;
        layouttype4             layout_type;
        layoutiomode4           iomode;
        layoutreturn4           layoutreturn;
};


>4) we don't use the temp definition of newsize4: 
>
>/*
> * TEMPORARY definition
> */
>typedef uint64_t newsize4;
>
>struct LAYOUTCOMMIT4resok {
>	newsize4                 locr_newsize;
>};
>
>instead we use
>
>union newtime4 switch (bool timechanged) {
>case TRUE:
>	nfstime4	   nt_time;
>case FALSE:
>	void;
>};
>
>  
>
We use the same newtime4 definition.  That is:

union newtime4 switch (bool_t timechanged) {
case TRUE:
        nfstime4      time;
case FALSE:
        void;
};



More information about the pNFS mailing list