从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 一个客户报告了一个crash和ocfs2文件系统的损坏。 - 这个crash是由于检测到corruption。 - fsck -fn输出显示了以下corruption: 2. 问题原因: - 在reflink工作流程中,当为inline xattr保留空间时出现问题。 - 问题函数是ocfs2_reflink_xattr_inline()。 - 在这个函数被调用时,reflink树已经在目标inode中重建,而没有检查目标inode是否在根元数据块中。 - 函数简单地将l_count从243减到227,从而为inline xattr分配了256字节的空间,而inode已经扩展到超过这个索引(在这种情况下高达230),导致corruption。 3. 修复措施: - 修复措施是在reflink树重建之前为目标inode保留空间。 - 客户已经验证了修复。 4. 相关链接: - lkml.kernel.org - ef962df057aa - ocfs2: xattr: fix inlined xattr reflink 5. 代码更改: - 代码更改包括在ocfs2/refcounttree.c和ocfs2/xattr.c文件中。 - 更改了ocfs2_reflink_xattr_inline()函数,以正确调整extent记录计数以保留空间。 这些信息可以帮助我们理解问题的根源、修复措施以及相关的代码更改。