Chinaunix首页 | 论坛 | 博客
  • 博客访问: 76359
  • 博文数量: 172
  • 博客积分: 2047
  • 博客等级: 大尉
  • 技术积分: 1745
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-19 15:23
文章分类

全部博文(172)

文章存档

2011年(72)

2010年(100)

我的朋友

分类: LINUX

2010-05-20 10:29:11

 分析fuse 的源码应该说是迫不得已。很多人在介绍fuse 时,可以让不熟悉内核的人员也能编写文件系统。这个还是蛮吸引的。但是实际上要能够编写一个好的类似文件系统。不熟悉内核还真的不行。
  现在吧fuse源码中一些个人感兴趣的地方说明。之前对于fuse中的信息传输通道进行了说明。这应该来说是最为佩服的。能够这样顺畅的使用两种模块,应 用同一种调用机制,灵活的游走在内核和用户态之间。不得不说是一种相当cool的设计。
  自己对于内核并没有太多的兴趣。主要是本职工作不在这里。但是既然进来了。就随意的收集些。先对fuse进行一些说明吧。开始看源码的时候没有什么总结。 现在也没有统一的框架来组织这些,还是有什么感兴趣的地方就说明下。

void request_send(struct fuse_conn *fc, struct fuse_req *req)
{
    req->isreply = 1;
    spin_lock(&fc->lock);
    if (!fc->connected)
        req->out.h.error = -ENOTCONN;
    else if (fc->conn_error)
        req->out.h.error = -ECONNREFUSED;
    else {
        queue_request(fc, req);
        /* acquire extra reference, since request is still needed
         after request_end() */

        __fuse_get_request(req);

        request_wait_answer(fc, req);
    }
    spin_unlock(&fc->lock);
}

以 上的函数 是fuse中用来发送请求的。在fuse 对vfs 提供的文件和目录的接口中都有调用。
阅读(507) | 评论(0) | 转发(0) |
0

上一篇:vfs dentry

下一篇:fuse inode 初始化

给主人留下些什么吧!~~