之前的笔记里有篇介绍ext3 dir-entry lookup(http://blog.chinaunix.net/u3/110888/showart_2156666.html)。对于目录/文件的创建及查找操作学习,算是了解一个文件系统的入口吧。

btrfs这部分代码太烦琐,暂时不想掉进code 细节,只从函数调用层面简单理解其操作逻辑。这一点和学习ext2/3的方式不一样,由于btrfs许多feature,听起来很酷,先理解这些feature是如何实现的。在网上找到的btrfs的文档不多,身边也没有比较方便的讨论环境,代码定得既乱而杂,目前入于不稳定版本,于是乎,换一种学习方式啦。(其实我真想弃而学习ext4)

1 目录创建 mkdir

简单地说分两步,

1) 创建目录inode,加入父目录所在的subvolume btrfs_root.

2)   add link,作为父目录的dir item,插入其inode对应leaf。(总体上看inode聚合成一个个小树)

第一个很简单,FS btrfs_root存放所有的inode.第二步可以与ext2/3相比较来看。 ext3中一个inode如果代表的是dir,其data block里存放的是本目录下的目录+文件对应的entry. btrfs中,menta-data是存放在leaf中的item,所以有个disk_key表示的dir-entries类型在leaf某偏移。data区则存放的是btrfs_dir_item,用于找到某entry对应的inode disk-key。 不同类型的item数据可在fs/btrfs/ctree里看到。

简单看下btrfs_mkdir operations:

1.reserve 5 items for new inode

2. start transaction

3. find a free object id from root tree

4. create new inode by btrfs_new_inode(). this function is interesting,it will build up the simple structure of a new inode in the btree..

5. initialize inode's i_op/i_fop

6. add link of inode and its parent for future lookup

2. 创建文件

it's nearly the same as mkdir() ,only different is after creating the new inode,need initialize its i_fop/op and i_mapping operatoins to default one.

3. btrfs_lookup

i was confused by the deep detail operations of lookup. acturally speaking, btrfs_lookup_dir_item() helper functin will do all tings.

The parent_inode_objectid + btrfs_dir_item_key+hash-name-offset is the search key ,after search the slot,cat get the specific item,and now it's okay to read item data to know the target inode's disk_key.  next ,you will get the inode by searching the root tree.

得赶紧闪了,我的车在楼下快被人偷了。  :--)

END.

unix 创建html文件路径,Btrfs 创建目录和文件的操作相关推荐

  1. linux C传入路径递归创建目录和文件接口实现

    本文封装了C 传入路径递归创建目录和文件接口实现,文末有提供示例代码: eg:传入./dir1/dir2/dir3/dir4/file0 可自动在当前目录创建dir1/dir2/dir3/dir4/四 ...

  2. fopen文件路径怎么写_PHP文件上传

    文件系统处理的作用: 1. 所有的项目离不开文件处理 2. 可以用文件长时间保存数据 3. 建立缓存, 服务器中文件操作 文件处理 1. 文件类型 以Linux为模型的, 在Windows只能获取fi ...

  3. java 通过文件路径获得MulipartFile类型文件 - File转MulipartFile

    java 通过文件路径获得MulipartFile类型文件 - File转MulipartFile 方式一:使用MockMultipartFile函数 方式二:数据流实现 思路:路径创建出File文件 ...

  4. python进阶14文件路径(找不到文件)

    原创链接:python进阶14文件路径(找不到文件) 开发时遇到问题,文件路径不正确,找不到文件等等,都是这一类问题. curdir,argv,file 举例: 文件1代码: 1 2 3 4 5 6 ...

  5. linux 新建1 10文件夹,linux创建目录和文件的命令

    linux下进行操作难免会遇到创建文件或者目录的情况,那么我们要使用什么目录来创建目录和文件呢?下面由学习啦小编为大家整理了linux创建目录和文件命令的相关知识,希望大家喜欢! 一.linux创建目 ...

  6. python 如何获取文件路径_Python如何获取文件路径/目录

    一.获取文件路径实现 1.1 获取当前文件路径 import os current_file_path = __file__ print(f"current_file_path: {curr ...

  7. tp5上传文件并获取文件路径_TP5上传文件

    TP5上传文件与上传图片雷同!!!!!其实都差不多的!!!!用到了js插件 1.首先引用 2.form表单内  最重要的就是   这个属性    enctype="multipart/for ...

  8. python指定文件路径_python实现指定文件夹下的指定文件移动到指定位置

    # coding:utf-8 import os import shutil import sys reload(sys) sys.setdefaultencoding('utf8') # print ...

  9. input file获取文件路径_python 基础 — 整理文件

    点击上方蓝字"Python圈子",进行关注~ 前言 文件整理常常会浪费很多时间.但如果让机器来做这样复杂的事情,不到 10 秒钟就能完成 1 个小时工作. 整理方式 进行文件整理最 ...

  10. c 服务器文件路径,c打开服务器文件路径

    c打开服务器文件路径 内容精选 换一换 文件作用:可以关闭/打开监听端口.指定监听端口.指定监听IP等.文件路径:Atlas 300场景下,在Host侧服务器上,在~/ide_daemon目录下查看i ...

最新文章

  1. java 重写set方法_Java程序设计-方法的重写(override)(笔记)
  2. 已经感冒好长一段时间了 不过今天我的新blog开张
  3. 前后端分离微服务架构如何设计?
  4. 教你玩转CSS表格(table)
  5. PWN-PRACTICE-BUUCTF-20
  6. Andorid 系统性能优化---(22)Android性能相关常用命令收集
  7. caffe+vs2013+window10+GPU(CPU)配置
  8. ERROR: No matching distribution found for numpy
  9. Asp.net 1.0与ASP.NET 2.0的异同
  10. 移动100m宽带慢的要死_为什么同样是100M的宽带, 中国移动就是比中国电信卡慢...
  11. Javaweb项目导出Excel文件无法下载问题
  12. 【知识点总结】模拟电子技术(模电)
  13. 华为服务器控制口地址修改,服务器修改管理口地址
  14. 青鸟云题库2018年8月26日15:20:28 springmvc错题总结
  15. “感动中国”2012年度人物颁奖词
  16. css 设置元素背景为透明
  17. 用HTML制作简单的个人介绍主页
  18. 蓝色TADF分子3DPyM-pDTC,2DPyM-mDTC,2DPyM-mDBr ,3DPyM-pDBr:蓝色热激活延迟荧光材料
  19. 【计算机网络】TCP为什么需要4次挥手
  20. PanDownload-百度网盘高速下载神级利器

热门文章

  1. 中国传统的节日(端午节)
  2. 工具系列之OneNote--关于团队的知识管理平台
  3. 吴晓波罗振宇2019跨年演讲感想
  4. Html5中长线条怎么写,我的年终总结
  5. python结构方程模型_SEM结构方程模型分析的数据需要至少多少样本量
  6. 拉丁超立方抽样方法 LHS
  7. appweb的开发步骤简介
  8. 四个月宝宝厌奶期症状?
  9. Julia学习笔记(一)——入门
  10. 【详细服务器配julia】