在内核6.6之前,struct block_device有成员变量:
struct super_block * bd_super;
可以通过检查以下内容来检查块设备是否已安装文件系统:
struct super_block *sb = bdev->bd_super;
if (!sb) {
// block device is not mounted.
}
但是从内核6.6开始,struct block_device没有成员变量:bd_super。现在如何检查块_device是否已安装文件系统?
经过一些测试,我发现可以使用以下代码从 block_device 访问文件系统的超级块:
struct super_block *sb = bdev->bd_holder;
我已经通过 vfst、ext2、3、4、xfs 文件系统确认了这一点。