gaojl0728
发表于 2014-01-09 22:13
1. 你是用alloc_pages分配低端内存还是高端内存, 如果是低端内存就不需要vmap了, 所有的低端内存已经映射过了, 你再映射一次的话就重复映射了, 浪费一块虚拟现行地址空间,完全没不必要。
2. 你直接用filp_open/filp_read/filp_write读写文件有什么问题吗? 为什么不用现成的东西。
bensenq
发表于 2014-01-09 23:34
回复 11# smartegg
不明白存储服务为什么一定要在内核态实现??用户层的mmap就是你的需求啊,为啥要在内核层做呢?
smartegg
发表于 2014-01-10 15:10
回复 21# gaojl0728
1. 你是用alloc_pages分配低端内存还是高端内存, 如果是低端内存就不需要vmap了, 所有的低端内存已经映射过了, 你再映射一次的话就重复映射了, 浪费一块虚拟现行地址空间,完全没不必要。
确实是哈, 有点浪费。vmap 确实有些没必要。
2. 你直接用filp_open/filp_read/filp_write读写文件有什么问题吗? 为什么不用现成的东西。
a.我现在的做法里相当于没有使用page cache 了, 直接通过address_space_operations->readpage() 读到page 中。
b.关于回刷磁盘:我直接遍历pages 对应的 pte , 看是否是dirty ,如果 dirty 的话 就调用 address_space_operations->writepage()
aweii
发表于 2016-06-26 23:25
mmap系统调用本身就是针对用户空间设计的