[pnfs] create session on data server

Garth Goodson Garth.Goodson at netapp.com
Tue Jan 30 13:07:52 EST 2007


This is a similar problem we ran into.  We had to add a specific flag to 
  our data servers saying that they are DSs, but this, I believe is an 
artifact of our implementation.  We also ran into problems trying to 
determine which role the CREATE_SESSION is for in the case of a DS and 
MDS running on the same node (with the same interface).

The same clientid is to be used on the MDS and DS.  The only solution at 
this time is for the MDS to push the clientid to the DS (as Andy just 
suggested), and let the CREATE_SESSION proceed at the DS.

-Garth

Marc Eshel wrote:
> I am not sure how to do it without a file handle. The file handle tells us 
> that this id a pNFS request and also provides us with the MDS id so we 
> know who to ask for the state.
> 
> 
> 
> 
> "William A. (Andy) Adamson" <andros at citi.umich.edu> 
> Sent by: androsadamson at gmail.com
> 01/30/2007 09:30 AM
> 
> To
> "Marc Eshel" <eshel at almaden.ibm.com>
> cc
> pnfs at linux-nfs.org
> Subject
> create session on data server
> 
> 
> 
> 
> 
> 
> The non-sessions server code uses the file handle to determine if an 
> incoming request is a pNFS request, and therefore this server is acting as 
> a data server. Now, in the sessions version the data-server needs to 
> respond to a CREATE_SESSION with no preceeding EXCHANGE_ID, and no 
> filehandle.
> 
> Can we use the existing get_state() interface? When the data server gets a 
> clientid it doesn't know about, it calls get_state() with just the 
> pnfs_get_state.clid field stuffed. How does the cluster fs know which node 
> is the MDS? Is there some info in the clientid?  If the cluster fs can 
> determine the MDS, then the MDS can check that the clientid is confirmed, 
> and return the pnfs_get_state.clid with the clientid, and the 
> pnfs_get_state.devid with the MDS devid.
> 
> This is similar to how the data server gets stateids.
> 
> 
> /* pNFS Metadata to Data server state communication*/
> struct pnfs_get_state {
>         u32                     devid;    /* request */
>         stateid_t               stid;     /* request;response */
>         clientid_t              clid;     /* response */
>         u32                     access;    /* response */
>         u32                     stid_gen;    /* response */
>         u32                     verifier[2]; /* response */
> };
> 
> -->Andy
> 
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs


More information about the pNFS mailing list