Fuse 学习
来源:互联网 发布:人工智能 电子书 编辑:程序博客网 时间:2024/05/16 05:41
1. enable debug
a. 修改 lib/Makefile, 添加 -O0, -g2 在 CC后面
b. root@ub1:/home/shawn/src/fuse-2.9.0/example# gcc -g2 -O0 -Wall -c hello.c -o hello.o -D_FILE_OFFSET_BITS=64
c. root@ub1:/home/shawn/src/fuse-2.9.0/example# gcc -g2 -O0 -o hello hello.o ../lib/.libs/*.o -lpthread -ldl -lrt d. gdb hello
2. fuse 内核态通知用户态的机制, 可以参见
http://www.cnblogs.com/hanyan225/archive/2010/10/20/1857040.html
其准备好了之后, 调用queue_request, 然后呢 这个里面调用这个kill_fasync 来做到。
3. fuse的基本工作流程
1. 在用户态只用 fuse程序,执行之后,a. 该进程会打开 /dev/fuse文件,得到fdb. 会自动挂载一个fuse类型的问题系统。并将fd作为mount option,传递给内核文件系统。c. 然后,程序会变成一个用户态的daemon进程,不停的读取(read)fd里面的内容。d. fd里面的内容呢, 当然就封装了要操作的方法,以及内容,参数等信息。e. 得到上述的信息之后呢,就可以进行操作了, 相当于rpc调用一样哦。2. 内核模块上面提到了 fuse文件系统,以及字符设备 /dev/fuse, 这两个东西,是需要内核来支持的。a. 这两个东西,都是在内核模块fuse里面来实现的。b. 模块启动的时候,注册了fuse类型的文件系统,并且初始化了/dev/fuse设备。3. 对文件系统的操作。例如,对mkdir操作。a. 对文件系统进行mkdir操作的话,会调用fuse的mkdir操作。b. fuse文件系统里面,会将该操作的op, arg等封装好了,然后发给 fuse_session, 并唤醒wait_queue,c. 而用户态进程呢,即刚刚那个fuse程序,不停的read,其实最后会调用内核态的fuse_dev_read函数。d. 而此函数呢,通过file结构,得到fuse session结构,然后就在该结构上面等带咯。直到c步骤中写入数据,并唤醒。4. 重要:1. 这个里面,fuse程序是一直在run的,一旦不run了,文件系统就不能访问了。2. 这里除了fuse程序作为rpc server外,还有个很重要的。3. 在fuse程序里面,打开了/dev/fuse文件,4. 然后呢,在调用mount函数来mount fuse文件系统, 在fuse文件系统的fillsuper里面呢,得到上面的/dev/fuse文件结构struct file,并将fuse文件系统的session存储到struct file中。5. 而fuse_dev_read中,就是根据struct file来得到fuse session的,并进行wait的。6. 从上面可以看到,fuse文件系统和fuse_dev_read里面必须使用同一个struct file结构,7. 而struct file是属于进程的,即这两个东西,都是属于fuse程序的,因为他们都是被fuse程序调用而创造出来的,当然最后,fuse进行被daemon化了,所以strut file是一直存在的。
- Fuse 学习
- Fuse学习<1>
- Fuse学习<1>
- Fuse学习<2>
- fuse
- fuse
- Dokan(Windows FUSE)学习笔记
- 用户态文件系统fuse学习
- 用户态文件系统fuse学习
- [文件系统]fuse学习笔记(一)
- [文件系统]fuse学习笔记(二)
- 用户态文件系统fuse概念学习
- 基于apache camel的fuse 学习笔记(1)
- 基于apache camel的fuse 学习笔记(2)
- Fuse类
- fuse专题
- 安装Fuse
- fuse 移植
- 副本结构Swift 1.8.0(Grizzly) 中region的理解
- 立体匹配十大概念综述 .
- C++中的算法algorithm
- node.js 加载adds on module no found
- CMD type命令
- Fuse 学习
- CSS控制图片的最大宽度
- !!!做题感受
- 什么是历史
- 第十天:Editor是怎么打开文件和保存文件的
- SSH下中文乱码解决
- 编辑器更新中国移动跨平台开发组件(英文简称UDE)
- Qt 实现无标题窗口的移动
- SDWebImage库的理解