相关疑难解决方法(0)

有没有办法在 eMMC 上以原子方式将文件和目录从 tempfs 移动到 ext4 分区

我们有基于 beaglebone 黑色的定制板,具有 256MB RAM 和 4GB eMMC。主板运行 Linux 内核 4.9

我们遇到了一种情况,我们在其中创建了一个文件tempfs,然后在验证之后,我们必须将它移动到 eMMC 的 ext4 分区。只归档一个certificate

在某些情况下,我们在一个目录中有多个证书,因此我们必须将整个目录从 tempfs 移动到 eMMC 上的 ext4 分区。

所以,我们所担心的问题之一是atomicitymv(移动)操作。

根据rename系统调用 Linux 手册页重命名文件是一个原子操作。 http://man7.org/linux/man-pages/man2/rename.2.html

但是我们不确定重命名操作是否涉及在两个文件系统之间移动文件,原子性仍然可用。所以问题是将文件从原子移动tmpfsext4原子吗?

显然,一种可能的解决方案是将文件保存在同一分区上的不同文件夹中(显然在同一文件系统上)并使用mv. 对于使用以下重命名方法的目录

SRC_dir  --> TMP_DEST_dir
DEST_dir --> BAK_DEST_dir
TMP_DEST_dir --> DEST_dir
delete BAK_DEST_dir
Run Code Online (Sandbox Code Playgroud)

对替代品的任何建议?

编辑
在我得到回复后,我尝试在板上遵循测试代码,

#include <stdio.h>
#include <errno.h>

int main()
{
    int retcode = 0;

    system("touch /tmp/rename_test");

    retcode = rename("/tmp/rename_test", "/home/fs_rename_test");

    if ( retcode …
Run Code Online (Sandbox Code Playgroud)

linux embedded ext4 rename tmpfs

3
推荐指数
1
解决办法
1824
查看次数

标签 统计

embedded ×1

ext4 ×1

linux ×1

rename ×1

tmpfs ×1