Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(mm): 简单实现fat文件系统的文件映射 #840

Merged

Conversation

MemoryShore
Copy link
Collaborator

  • 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
  • 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
  • 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
  • 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
  • 参考linux使用protection_map映射表进行页面标志的获取

@github-actions github-actions bot added the enhancement New feature or request label Jun 25, 2024
@Chiichen
Copy link
Member

@MemoryShore 有一个format check没过

@dragonosbot dragonosbot added A-fs Area: 文件系统 O-riscv64 Target: riscv64 O-x86_64 Target: x86_64 T-driver Relevant to the driver team, which will review and decide on the PR/issue. labels Jun 25, 2024
@MemoryShore
Copy link
Collaborator Author

看了之后,总感觉这个page cache有点问题。PageCache跟inode的关系不是一对一的,因为

那是怎么样的,我网上查的资料都是一对一的

@fslongjin
Copy link
Member

修改是已经完成了吗?我看都标称了resolved,但是没有push

kernel/src/filesystem/fat/fs.rs Outdated Show resolved Hide resolved
kernel/src/filesystem/fat/fs.rs Outdated Show resolved Hide resolved
@fslongjin
Copy link
Member

这个分支目前存在冲突

@Chiichen
Copy link
Member

Chiichen commented Sep 2, 2024

@fslongjin 有空review下~

@Jomocool
Copy link
Collaborator

Jomocool commented Sep 2, 2024

@fslongjin 有空review下~

目前是我在review ^_^

@Chiichen
Copy link
Member

Chiichen commented Sep 2, 2024

@fslongjin 有空review下~

目前是我在review ^_^

噢噢行哈哈哈

kernel/src/mm/fault.rs Outdated Show resolved Hide resolved
@Jomocool Jomocool self-requested a review September 3, 2024 13:57
pid: {}\n",
pfm,
crate::process::ProcessManager::current_pid().data()
pub unsafe fn do_cow_fault(pfm: &mut PageFaultMessage) -> VmFaultReason {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉是不是可以在最后取消对cache_page的映射

Copy link
Collaborator Author

@MemoryShore MemoryShore Sep 3, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉是不是可以在最后取消对cache_page的映射

你说的最后具体指哪里?啥叫取消cache_page的映射?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感觉是不是可以在最后取消对cache_page的映射

你说的最后具体指哪里?啥叫取消cache_page的映射?

没事了,我的理解有问题哈哈

@Jomocool
Copy link
Collaborator

Jomocool commented Sep 3, 2024

@fslongjin 感觉没什么问题了

@fslongjin fslongjin merged commit cf7f801 into DragonOS-Community:master Sep 4, 2024
7 checks passed
Samuka007 added a commit that referenced this pull request Sep 28, 2024
* 修复mprotect系统调用未正确设置vm_flags的错误 (#847)

* fix(time): modify update wall time (#836)

更改了时间子系统的update_wall_time函数,通过读取当前周期数,计算delta值进行更新,而不是通过传入delta值进行更新

* chore: 调整triagebot.toml以适应新的组织架构 (#848)

* doc: 完善README.md (#849)

* doc: 完善README.md

* chore: 更新sphinx相关配置,适应read the docs的更新 (#850)

根据read the docs在7月15日blog,进行此修改

https://about.readthedocs.com/blog/2024/07/addons-by-default/

* feat(driver/net): 实现Loopback网卡接口 (#845)

* 初步实现loopback设备

* fix: build-scripts和tools目录下的make check指定工具链版本 (#861)

* fix: tcp poll没有正确处理posix socket的listen状态的问题 (#859)

* chore: 将工具链更新到2024-07-23 (#864)

* chore: 将工具链更新到2024-07-23

* feat(fs): add eventfd syscall support (#858)

* feat(fs): add eventfd syscall support

* refactor: 删除过时的va-pa转换函数,改为统一使用MMArch (#862)

* 默认nightly-2024-07-23 & config改为config.toml (#872)

* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。 (#870)

* fix: 修复由于升级到2024-07-23工具链之后,某些机器上面内核运行一直fault的问题。

* feat(cred): 初步实现Cred (#846)

* 初步实现Cred

* 添加seteuid和setegid

* 添加cred测试程序

* 修改Cred::fscmp返回结果为CredFsCmp枚举

* 完善root用户相关信息

* fix: 修复键盘码解析器没能正确处理类似ctrl C的控制字符的问题 (#877)

* fix: 修复键盘码解析器没能正确处理类似ctrl C的控制字符的问题

* fix: 解决ntty潜在的panic问题

* ci: enable ci workflow on branches other than master (#891)

* 修复unlink、unlinkat系统调用的路径错误 (#892)

* fix: socket shutdown wrong implement (#893)

* feat: 增加tokio异步运行时支持 (#894)

* fix the EventFdFlags error

* feat: support tokio (Single thread version)

Fix deadlock issue on closing file.
Add function for PipeInode and EventFdInode.

* fix: pipe 读取/写入阻塞时,无法kill进程的问题 (#889)

* fix: 修复存在多个virtio设备时,中断号冲突的问题 (#904)

* feat: 添加gendisk抽象 (#903)

* feat: 添加gendisk抽象.

* 支持使用virtio磁盘作为根文件系统

* Update initial_kthread.rs to resolve conflict.

---------

Co-authored-by: Donkey Kane <[email protected]>

* feat(mm): 简单实现fat文件系统的文件映射 (#840)

- 添加文件映射相关接口,目前已简单实现fat文件系统的私有映射和共享映射
- 添加msync系统调用(由于当前未实现脏页自动回写,需要手动调用msync进行同步)
- 简单实现PageCache(暂时使用HashMap进行文件页号与页的映射)
- 添加新的PageFlags标志结构,原PageFlags改名为EntryFlags
- 参考linux使用protection_map映射表进行页面标志的获取
- 添加页面回收机制
- 添加页面回收内核线程
- 缺页中断使用的锁修改为irq_save; 添加脏页回写机制
- 修复do_cow_page死锁问题
- 访问非法地址时发送信号终止进程
- 修复重复插入反向vma表的错误
- 添加test_filemap文件映射测试程序

* feat: 添加对内核引导协议的抽象 (#913)

* 添加multiboot header

* head.S传参增加bootloader类型

* feat: 添加引导加载协议的抽象,并为multiboot2实现这个抽象.

* 把framebuffer的映射地址改为从early ioremap和mmio pool分配

* riscv64能运行

* fix(virtio):修复了特定virtio设备环境下中断号重复错误,以及开机内核panic的bug (#881)

* feat: 允许通过multiboot引导(直到acpi初始化报错) (#914)

* fix(mm): 修复riscv64启动时的PageFault (#915)

* 修复riscv64启动时的PageFault

* 优化代码结构

* feat(driver/net): 将网络设备注册到sysfs, 添加设备类属性文件 (#919)

* ci(docs): Build docs when push/PR to master and release version. (#935)

Signed-off-by: longjin <[email protected]>

* fix: Fix make update-submodules-by-mirror Error (#928)

* remove --init suffix in update-submodules-by-mirror

* ci: deploy documents to minio (#936)

Signed-off-by: longjin <[email protected]>

* ci: fix awscli botcore (#937)

Signed-off-by: longjin <[email protected]>

* feat(ida): IDA内部改为使用XArray实现 (#934)

目前可以记录哪些ID已经分配,支持了ID释放的功能.

Signed-off-by: longjin <[email protected]>

* doc: add commit revision to footer while build with sphinx-multiversion (#939)

Signed-off-by: longjin <[email protected]>

* doc: 添加在github上编辑的按钮,以及扩展footer (#940)

Signed-off-by: longjin <[email protected]>

* fix: sysfs ifacetrait改名

* merge net && feat(net): stream sockpairs

---------

Signed-off-by: longjin <[email protected]>
Co-authored-by: MemoryShore <[email protected]>
Co-authored-by: 黄铭涛 <[email protected]>
Co-authored-by: LoGin <[email protected]>
Co-authored-by: linfeng <[email protected]>
Co-authored-by: Jomo <[email protected]>
Co-authored-by: Chiichen <[email protected]>
Co-authored-by: Samuel Dai <[email protected]>
Co-authored-by: Donkey Kane <[email protected]>
Co-authored-by: MemoryShore <[email protected]>
Co-authored-by: 曾俊 <[email protected]>
Co-authored-by: EMasi <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-driver Area: 驱动程序 A-fs Area: 文件系统 enhancement New feature or request O-riscv64 Target: riscv64 O-x86_64 Target: x86_64 S-等待作者修改 Status: 这正在等待作者的一些操作(例如代码更改或更多信息)。 T-driver Relevant to the driver team, which will review and decide on the PR/issue. T-virtulization Relevant to the virtulization team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants