我正在修改一个Linux内核模块,以帮助恢复SSD。基本上我有一个SSD的虚拟图像,1600万页,我不知道它们是如何组合在一起的,所以不是根据我提出的各种方案写出逻辑图像(IE,因为我弄清楚如何它存储翻译表),我宁愿动态地做。
有一个模块stackbd可以简单地修改,以允许逻辑块号到虚拟映像使用的虚拟号的映射。逻辑页码通过一个非常容易修改的函数传递。如果我的LBN-> PPN地图可以加载到模块中,我可以轻松地将其翻译成另一个。
问题是,我不是内核程序员,我最初的想法是将64MB阵列保留在内存中似乎并不理想。那我该怎么做呢?我应该分配内存还是将地图保存在我一直打开的文件中,从每个请求中读取相应的块编号并关闭?它不一定非常快,但也不会太慢。
如果我应该分配内存最好的方法,似乎不止一个。这是一次性的,模块只会在我处理图像时被加载,可能会使机器崩溃,因此不必以最好的方式完成,只需要最快捷的方式就可以了。
TIA。