fstrim如何不受比赛条件的困扰?

问题描述 投票:0回答:1

据我了解,GNU / Linux上的fstrim实用程序只是一个实用程序,而不是内核模块;在发现给定的块未使用和发出ioctl(2) FITRIM命令对其进行修剪之间,如何避免出现竞争情况?

linux linux-kernel race-condition
1个回答
0
投票

这很容易阅读源代码。

fstrim utility与确定使用或未使用的块没有关系,并且没有执行任何操作的代码。它仅在由fstrimFITRIM选项指定的设备的整个范围(默认情况下,整个设备(-o))上调用-l ioctl。可以理解,内核仅应修整该范围内的unused块,并且由内核来确定哪些块是适当的,并锁定。正如您所说,要在用户空间中做到这一点而又不冒种族或僵局的风险,几乎是不可能的。

start = 0, len = ULLONG_MAX是处理ext4的修整的内核代码。我不是fs代码方面的专家,但是显然某种锁定正在发生。

© www.soinside.com 2019 - 2024. All rights reserved.