奇怪的调试行为

奇怪的调试行为

我正在玩 debugfs。我首先创建了一个文件:

debugfs -w /dev/vda1
> write /etc/hosts /a/b/c/d

并且文件系统已损坏:

[root@linux2 /]# ls -l
ls: cannot access /a/b/c/d: No such file or directory
total 8388724
-??????????   ? ?        ?             ?            ? /a/b/c/d

我觉得这个系统也坏了:

[978471.090291] EXT4-fs error (device vda1): __ext4_new_inode:989: comm SystemLogFlush: failed to insert inode 9190949: doubly allocated?
[978475.765474] EXT4-fs (vda1): pa ffff93f4732c4000: logic 2133, phys. 15753237, len 1963
[978475.767163] EXT4-fs error (device vda1): ext4_mb_release_inode_pa:3803: group 480, free 1962, pa_free 1960
[978475.814801] JBD2: Spotted dirty metadata buffer (dev = vda1, blocknr = 0). There's a risk of filesystem corruption in case of system crash.

由于debugfs不支持通过inode删除文件,那么如何删除这个文件呢?

这是怎么回事?

答案1

清理内容最简单的选择是检查文件系统:

e2fsck -f /dev/vda1

问题是你最终得到了一个包含正斜杠的目录条目,这是不应该发生的。当前版本debugfs不允许这样做,看来您的版本允许。

相关内容