[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