IN_MOVE_TO是否直接跟随inotify中的IN_MOVE_FROM?

时间:2016-09-30 11:40:13

标签: unix inotify

移动文件后,inotify将发出IM_MOVE_FROMIN_MOVE_TO或两者。事件中有一个cookie字段,其值允许我们确定链接的事件。

未指定的内容是关联的MOVE事件的顺序以及MOVE_TO是否始终直接跟随链接MOVE_FROM(如果两者都已发布)。

他们之间可能还有其他事件吗?

如果是,可能会混合多个MOVE个事件对吗?

1 个答案:

答案 0 :(得分:0)

我知道这不是你确切问题的权威性答案,但我想分享我们在watchman code中所做的事情,这是在大量拥有大量文件的Linux机器上经过严峻考验的高变化率。

我们在防守方面做出以下假设:

  1. MOVE_FROM出现在MOVE_TO
  2. 之前
  3. 我们可能无法获得MOVE_FROM
  4. 我们可能无法获得MOVE_TO
  5. 因为我们有点悲观,而且inotify文档中的措辞含糊不清,我们会记录cookie - >在地图中移动信息,这样我们就不会在MOVE_FROM之后直接使用MOVE_TO。它也有点复杂,因为MOVE_FROM可能是一次读取时读取缓冲区中的最后一个数据,MOVE_TO可能是后续读取的第一个数据。

    每当我们消耗了inotify流中的所有可用数据时,我们就会清除地图(例如:非阻塞读取返回0字节)。该地图中的任何内容都在上面的(3.)类别中,并且将来不会出现。