PMDK从pmemobj到物理地址的映射流程

三重映射

  • 从pmemobj的ID到虚拟地址的映射
  • 从虚拟地址到文件内偏移的映射
  • 从文件到物理地址的映射

pmemobj到虚拟地址的映射

  • 查看pmemobj的创建函数 pmemobj_createW(src\libpmemobj\obj.c)

    1. pmemobj_createW —> pmemobj_createU(src\libpmemobj\obj.c)

    2. pmemobj_createU —> util_pool_create(src\common\set.c)

    3. util_pool_create —> util_pool_create_uuids(src\common\set.c)

    4. util_pool_create_uuids —> util_poolset_create_set(src\common\set.c)

    5. util_poolset_create_set —> util_poolset_single(src\common\set.c)

    6. 设置DAX模式就主要到util_poolset_single进行处理

      ​ 其中rep->part[0].fd成员使用 util_poolset_file填充

      rep->part[0].alignment使用device_dax_alignment填充

  • 查看pmemobj_open函数(src\libpmemobj\obj.c)