NFS 网络文件系统分析
2013-07-10 10:35
1206 查看
学习NFS SUNRPC 开始于下面这个文档,有一定的参考价值:
http://download.csdn.net/detail/chenqiang0721/5729801
v2.6.34 如何打开 SUNRPC 调试:
SUNRPC 中很多代码中都用dprintk 输出debug 信息,比如,
dprintk() 的定义在 include/linux/sunrpc/debug.h
也就是,rpc_debug 和 子的debug选项位与,获得这个debug 语句是否输出。
其中,rpc_debug 是通过 /proc/sys/sunrpc/rpc_debug 获取的数值
子的debug 选项包括:
也就是说,想打开其中的任何一个debug 选项,只需要 执行: # echo "子选项的值" > /proc/sys/sunrpc/rpc_debug
在 sunrpc 中的各个文件中会对 FACILITY 进行赋值,这样不同文件中使用 dprintk() 就对应了不同的子debug 选项,例如
net/sunrpc/xprtsock.c
#ifdef RPC_DEBUG
# undef RPC_DEBUG_DATA
# define RPCDBG_FACILITY RPCDBG_TRANS
#endif
#echo 32767 > /proc/sys/sunrpc/rpc_debug 就将会输出所有的debug 信息。
http://download.csdn.net/detail/chenqiang0721/5729801
v2.6.34 如何打开 SUNRPC 调试:
SUNRPC 中很多代码中都用dprintk 输出debug 信息,比如,
static int xs_tcp_send_request(struct rpc_task *task) { struct rpc_rqst *req = task->tk_rqstp; struct rpc_xprt *xprt = req->rq_xprt; struct sock_xprt *transport = container_of(xprt, struct sock_xprt, xprt); struct xdr_buf *xdr = &req->rq_snd_buf; int status; xs_encode_tcp_record_marker(&req->rq_snd_buf); xs_pktdump("packet data:", req->rq_svec->iov_base, req->rq_svec->iov_len); /* Continue transmitting the packet/record. We must be careful * to cope with writespace callbacks arriving _after_ we have * called sendmsg(). */ while (1) { status = xs_sendpages(transport->sock, NULL, 0, xdr, req->rq_bytes_sent); dprintk("RPC: xs_tcp_send_request(%u) = %d\n", xdr->len - req->rq_bytes_sent, status);
dprintk() 的定义在 include/linux/sunrpc/debug.h
#define dprintk(args...) dfprintk(FACILITY, ## args) #undef ifdebug #ifdef RPC_DEBUG # define ifdebug(fac) if (unlikely(rpc_debug & RPCDBG_##fac)) # define dfprintk(fac, args...) do { ifdebug(fac) printk(args); } while(0) # define RPC_IFDEBUG(x) x
也就是,rpc_debug 和 子的debug选项位与,获得这个debug 语句是否输出。
其中,rpc_debug 是通过 /proc/sys/sunrpc/rpc_debug 获取的数值
子的debug 选项包括:
/* * RPC debug facilities */ #define RPCDBG_XPRT 0x0001 #define RPCDBG_CALL 0x0002 #define RPCDBG_DEBUG 0x0004 #define RPCDBG_NFS 0x0008 #define RPCDBG_AUTH 0x0010 #define RPCDBG_BIND 0x0020 #define RPCDBG_SCHED 0x0040 #define RPCDBG_TRANS 0x0080 #define RPCDBG_SVCXPRT 0x0100 #define RPCDBG_SVCDSP 0x0200 #define RPCDBG_MISC 0x0400 #define RPCDBG_CACHE 0x0800 #define RPCDBG_ALL 0x7fff
也就是说,想打开其中的任何一个debug 选项,只需要 执行: # echo "子选项的值" > /proc/sys/sunrpc/rpc_debug
在 sunrpc 中的各个文件中会对 FACILITY 进行赋值,这样不同文件中使用 dprintk() 就对应了不同的子debug 选项,例如
net/sunrpc/xprtsock.c
#ifdef RPC_DEBUG
# undef RPC_DEBUG_DATA
# define RPCDBG_FACILITY RPCDBG_TRANS
#endif
#echo 32767 > /proc/sys/sunrpc/rpc_debug 就将会输出所有的debug 信息。
相关文章推荐
- windows挂载linux网络文件系统NFS
- ARM开发板与PC机Ubuntu系统建立连接,采用NFS(网络文件系统)挂载
- NFS网络文件系统的搭建
- NFS(网络文件系统)
- OK6410-B:NFS挂载网络文件系统遇到的问题
- NFS网络文件系统的搭建
- 通过网络文件系统NFS
- CentOS 7系统平台下网络文件系统NFS高级设置
- 在虚拟机下Ubuntu建立NFS网络文件系统
- ubuntu(12.04+14.04)下通过网络文件系统NFS将执行文件下载到开发板运行(再修改)
- windows挂载linux网络文件系统NFS
- Linux 服务器之间如何进行文件目录共享NFS(网络文件系统)
- Ubuntu Kylin 16.04 下搭建nfs网络文件系统服务器
- NFS (网络文件系统)
- Linux下NFS(网络文件系统)的建立与配置方法
- NFS(网络文件系统)模拟错误简单总结
- 详解NFS网络文件系统
- CentOS 6.6 安装nfs网络文件系统
- ubuntu 上开启 网络文件系统(NFS)
- Gentoo Linux下配置NFS(网络文件系统)