移动文件时更新引用计数?
Updating the reference count when moving a file?
如果我在同一个分区上移动一个文件,当我移动时,我是否应该将 i-node 的引用计数更新为 2(因为我是第一次复制)然后再次将它递减为 1(当我删除目录条目) ?
或者引用计数在移动过程中未被修改?
没有
当一个文件是"moved"时,真正发生的是文件命名层中对索引节点的引用被更改,仅此而已。事实上,文件并没有被复制。
意识到文件命名层纯粹是为了您的方便。文件系统本身实际上只关心索引节点。通常,甚至目录也是文件命名层的虚构。 (的确,某些文件系统实际上在文件系统层按层次结构组织目录,但例如 ext2 和 ext3 就不是这样了)。
虽然技术上确实在极短的时间内没有引用或两次引用命名层中的文件,但从系统调用到内核的角度来看,这确实是一个原子事务正在制作中,因此它实际上无关紧要,不会成为您的竞争条件。
如果我在同一个分区上移动一个文件,当我移动时,我是否应该将 i-node 的引用计数更新为 2(因为我是第一次复制)然后再次将它递减为 1(当我删除目录条目) ?
或者引用计数在移动过程中未被修改?
没有
当一个文件是"moved"时,真正发生的是文件命名层中对索引节点的引用被更改,仅此而已。事实上,文件并没有被复制。
意识到文件命名层纯粹是为了您的方便。文件系统本身实际上只关心索引节点。通常,甚至目录也是文件命名层的虚构。 (的确,某些文件系统实际上在文件系统层按层次结构组织目录,但例如 ext2 和 ext3 就不是这样了)。
虽然技术上确实在极短的时间内没有引用或两次引用命名层中的文件,但从系统调用到内核的角度来看,这确实是一个原子事务正在制作中,因此它实际上无关紧要,不会成为您的竞争条件。