1. EXCHANGE_ID - 创建client id
封装在nfs4_op_exchange_id
中。
- 调用
get_client_record
函数,将NFS client传进来的co_ownerid
创建nfs_client_record_t
。主要是填充其中的cr_unconfirmed_rec
部分。 - 调用
create_client_id
,分配client id,创建client owner等。
1.1 nfs_client_record_t
struct nfs_client_record_t {
...
nfs_client_id_t *cr_confirmed_rec; //confirm
nfs_client_id_t *cr_unconfirmed_rec;//unconfirm
...
}
struct nfs_client_id_t {
clientid4 cid_clientid; //clientid
verifier4 cid_verifier; //verifier,重启后会变化
...
state_owner_t cid_owner; //client owner
struct glist_head cid_openowners; //open owner list
struct glist_head cid_lockowners; //lock owners list
pthread_mutex_t cid_mutex;
...
struct gsh_client *gsh_client; //
};
2. CREATE_SESSION - confirm client id
封装在nfs4_op_create_session
中。
- 通过
nfs_client_id_get_unconfirmed
,通过clientid得到unconfirmed的nfs_client_id_t
,即EXCHANGE_ID时候创建的。 - 创建
nfs41_session
对象,为session分配slot - 创建session id
- 将
nfs_client_record_t
中的cr_unconfirmed_rec
抹去,填上cr_confirmed_rec
。
网友评论