早晨走路來實驗室,一路上頭上瀑布,腳下海浪,還不慎滑倒,摔了一身水,想起初中時候每次下雨,都從家裡百公尺衝刺到學校北牆,竄上牆頭,翻進學校,兩相對比,不禁感慨:人都會變老,誰也逃不掉。
言歸正傳,nfsd端write流程;
resp的定義相比read多了len + stable 兩個成員,
struct nfsd3_writeargs ;
static __be32
nfsd3_proc_write(struct svc_rqst *rqstp, struct nfsd3_writeargs *argp,
struct nfsd3_writeres *resp)
{__be32 nfserr;
unsigned long cnt = argp->len;
fh_copy(&resp->fh, &argp->fh);
resp->committed = argp->stable;
nfserr = nfsd_write(rqstp, &resp->fh, null,
argp->offset,
rqstp->rq_vec, argp->vlen,
&cnt,
&resp->committed);
resp->count = cnt;
return_status(nfserr);
這個len與count 有什麼區別麼?
nfsd_write()中並沒有把count引數傳遞進去,推斷count應該是廢棄了。
nfsd_write()設定了stable變數,但是沒看懂。。。大致判斷不會影響下層的呼叫,之後
host_err = vfs_writev(file, (struct iovec __user *)vec, vlen, &offset);
set_fs(oldfs);
if (host_err < 0)
goto out_nfserr;
*cnt = host_err;
nfsdstats.io_write += host_err;
nfsdstats是個全域性變數,表徵全域性狀態,然後看 vfs_writev();
if (!(file->f_mode & fmode_write))
return -ebadf;
if (!file->f_op || (!file->f_op->aio_write && !file->f_op->write))
return -einval;
return do_readv_writev(write, file, vec, vlen, pos);
看 do_readv_writev();
剩下的**與read的路徑完全一致了,不再追誰。
10 2 2 客戶端流程分析
客戶端主要包括以下主要函式過程 初始化 ssl演算法函式 連線並接收伺服器訊息執行緒函式 向伺服器傳送訊息函式。1 初始化 ssl演算法 此過程的 新增在 oninitdialog 方法中。處理過程如下 1 初始化 openssl 演算法庫ssl load error strings ssleay ...
XFire客戶端流程分析及案例
下面是xfire客戶端呼叫的流程分析圖,本文後續部分將圍繞該圖展開。服務模型是xfire中非常重要的概念之一,包含了服務的介面資訊 操作資訊 binding資訊等諸多服務呼叫過程中需要的資訊。因此在進行服務呼叫之前首先要建立服務模型。建立服務模型的工作是由服務工廠servicefactory完成的,...
客戶端提交mr job原始碼流程分析
job job.getinstance獲得job物件 job.set 新增configuration等配置引數 job.waitforcomplete 原始碼內部實則呼叫submit 方法 之後jobsubmiter中有個成員cluster cluster中又有個成員proxy 物件,幫助提交到ya...