在 ext4 文件系统中寻找目标

Finding goal in ext4 file system

linux 内核 4.7.2 中的文件 extents.c (fs/ext4/extents.c) 处理文件分配方法。

ar.goal是通过函数ext4_ext_find_goal

计算出来的
ar.goal = ext4_ext_find_goal(inode, path, map->m_lblk);

谁能解释一下这个函数是如何工作的?

ext4_ext_find_goal() 当我们需要分配新块时被调用。

here中,这个函数是按照你说的调用的。

ar.goal = ext4_ext_find_goal(inode, path, map->m_lblk);

在此上下文中,path 不是 NULL。因此,ext4_ext_find_goal() 将找到那个 path 的块号,并且 return 这个块号。