PNFS代码阅读笔记(客户端钩子函数注册过程)

客户端模块初始函数static int __init init_nfs_fs(void)
->#ifdef CONFIG_PNFS
    err = pnfs_initialize();
在 pnfs_initialize();
    pnfs_v4_clientops_init();

    pnfs_initialized = 1;//标记PNFS已经初始化了,在layout模块中会检测此标记
在pnfs_v4_clientops_init(),中
pnfs_v4_clientops_init(void)
{
    struct nfs_rpc_ops *p = (struct nfs_rpc_ops *)&pnfs_v4_clientops;
//复制了pnfs-v4_clientops的内存,并在下面补充特有的操作
    memcpy(p, &nfs_v4_clientops, sizeof(*p));
    p->file_ops        = &pnfs_file_operations;
    p->setattr        = pnfs4_proc_setattr;
    p->read_done        = pnfs4_read_done;
    p->write_setup        = pnfs4_proc_write_setup;
    p->write_done        = pnfs4_write_done;
    p->commit_setup        = pnfs4_proc_commit_setup;
    p->commit_done        = pnfs4_commit_done;
}

set_pnfs_layoutdriver()中会将pnfs_v4_clientops注册到

server->nfs_client->rpc_ops = &pnfs_v4_clientops;
其中server是SB中的一个结构。
set_pnfs_layoutdriver()会在mount时候调用
nfs4_get_sb
nfs4_try_mount
nfs4_remote_fs_type
nfs4_remote_get_sb
nfs4_init_pnfs
set_pnfs_layoutdriver
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值