Linux kernel blockdev--flushbufs是否可靠地同步到磁盘?

Linux kernel blockdev--flushbufs是否可靠地同步到磁盘?,linux-kernel,embedded-linux,block-device,Linux Kernel,Embedded Linux,Block Device,我正在一个shell脚本中使用blockdev--flushbufs/dev/mmcblk0p1 我假设它与原始块设备访问的同步具有相同的效果 我想知道在blockdev--flushbufs结束时,是否可以安全地假设该设备的所有延迟写入都已完成 (手册页提到IOCTL,所以我认为它应该是阻塞的?在emmc上,不幸的是,这件事不起作用(对于通用的sd卡也是如此)。ioctl未在上游驱动程序上实现 到目前为止,我认为它是言行一致的,直到我意识到它什么也没做 mmcqd不受ioctl BLKFLSB

我正在一个shell脚本中使用
blockdev--flushbufs/dev/mmcblk0p1

我假设它与原始块设备访问的同步具有相同的效果

我想知道在
blockdev--flushbufs
结束时,是否可以安全地假设该设备的所有延迟写入都已完成


(手册页提到IOCTL,所以我认为它应该是阻塞的?

在emmc上,不幸的是,这件事不起作用(对于通用的sd卡也是如此)。ioctl未在上游驱动程序上实现

到目前为止,我认为它是言行一致的,直到我意识到它什么也没做

mmcqd不受ioctl BLKFLSBUF的影响,并处理队列中挂起的异步mmc请求。它接受它所需要的,但是如果在执行之后立即执行掉电-f: blockdev——flushbufs 或 echo 3>/proc/sys/vm/drop\u缓存
块开发和文件系统在您的emmc或sd卡上不会完全同步。

“逻辑重复”flushbufs可能只是删除读取缓存,而不是同步写入。感谢您指向上面的链接,但丢弃现金是危险的,我假设它必须将缓存数据写入闪存本身。我就是这样用的。我使用
dd
写入原始分区,然后调用
blockdev--flushbufs/dev/mmcblk0p1
以确保数据写入闪存(eMMC)。如果
blockdev--flushbufs/dev/mmcblk0p1
没有这样做,那么我应该使用什么?有什么提示吗?如果我的键盘召唤一辆大型自动驾驶卡车从我的宠物猫身上碾过,那也会很危险。我对它做了更多的更新。祝你好运