我想知道无论如何要保持内核和用户空间之间的原子行为?
例如dm-thin:
一个用户空间程序询问瘦设备分配块并告诉程序" OK"。
现在断电发生在alloc block之后,并没有告诉程序" OK"。
程序会再次询问精简设备分配,并且内核会先浪费一个已分配的块,因为程序并不知道它已分配一次。
那么无论如何都要使行为原子化?或任何设计模式建议?
答案 0 :(得分:0)
从用户空间到内核的每次互动都通过system call(在syscalls(2)中列出)。
从用户角度来看,系统调用(根据定义)是原子的。当然它可能会失败(见errno(3))。
我猜device mapper可能(或可能应该)与systemd互动。