NFSD端write流程分析
来源:互联网 发布:2017最新网络流行语 编辑:程序博客网 时间:2024/06/10 00:03
早晨走路来实验室,一路上头上瀑布,脚下海浪,还不慎滑倒,摔了一身水,想起初中时候每次下雨,都从家里百米冲刺到学校北墙,窜上墙头,翻进学校,两相对比,不禁感慨:人都会变老,谁也逃不掉。
言归正传,NFSD端write流程;
resp的定义相比read多了len + stable 两个成员,
struct nfsd3_writeargs {
svc_fh fh;
__u64 offset;
__u32 count;
int stable;
__u32 len;
int vlen;
};
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的路径完全一致了,不再追谁。
- NFSD端write流程分析
- NFSD端read流程介绍
- hadoop源码 - HDFS write流程分析(Hadoop2.0)
- HDFS write流程与代码分析(Hadoop 2.0)
- nfsd-admin-interfaces.txt
- nfs 之 write 分析
- map端执行流程分析
- Linux串口驱动分析write
- python write, writelines性能分析
- Linux串口驱动分析write
- Linux串口驱动分析write
- Linux串口驱动分析write
- Spark shuffle-write原理分析
- Socket通信之Write实现流程
- LightsService分析 --- 流程分析
- nfsd 已死,但是 subsys 被锁
- Hadoop中map端流程分析
- RESPONSE.WRITE和%=%效率分析
- 总结--IE6,IE7,IE8,火狐都支持:js/css 底部固定, 底部固定漂浮导航效果
- 关于QT 中 QDialog的几点,exec show(ZZ)
- 游戏是如何检测到有OD等调试工具的
- show()和exec() (zz)
- 鼠标经过表格行时,显示变色、字体放大效果 jquery
- NFSD端write流程分析
- QTextEdit和QTextDocument(ZZ)
- 提升ASP.net性能的方法
- js解决cookie跨域访问的问题
- ACE - ACE_Recursive_Thread_Mutex, ACE_Thread_Mutex, ACE_Condition .
- 从静态代理到动态代理
- HDOJ1715 大菲波数
- MSSQL2000 获取数据库表、视图、存储过程等结构信息
- Serializable