如何清理 '/dev/sdx' 缓存?

如何清理 '/dev/sdx' 缓存?

我在我的 ubuntu 系统中遇到了一个问题,因为它是为了测试,所以我通常会发出以下命令:

echo "scsi add-single-device 0 0 0 0" > /proc/scsi/scsi

我只是在使用ata1端口。

当我完成测试时,我只需发出:

echo "scsi remove-single-device 0 0 0 0" > /proc/scsi/scsi

但是,当我开始使用 ata 命令时,这个过程不再起作用,因为它附加到系统。

例如,

前:

此命令始终返回/dev/sdb已安装的状态,而另一个命令只是卸载驱动器,而不是将其连接到系统。

现在:

我提到的这个命令似乎有效,但是对于我测试的每个驱动器,都会继续用下一个字母填充缓存,例如:

第一次测试:/dev/sdb

第二次测试:/dev/sdc

等等,直到我用完了信件,因为系统无法发出超过dev/sdz

有人能告诉我如何清除缓存或如何解决这个问题吗?

我将非常感激任何帮助。

答案1

我发现了实际“缓存”的问题。

我有一段代码,它让文件描述符在每次驱动器测试中打开,直到程序填满 fd 分配的所有剩余空间。错误出现在 python 调用中,open()因为它使用参数os.O_RDWR而不是os.O_RDONLY.

os.O_RDWR在发出 ATA 命令后,让所有文件描述符都打开。将其更改为os.O_RDONLY内存缓冲区后,即可读取文件描述符,并且文件描述符已正确关闭。

希望这能给处于困境中的任何人提供帮助。

相关内容