判断分区是否为ext4文件系统

这段C代码展示了如何检查一个分区是否使用ext4文件系统。通过打开设备文件,读取并验证超级块(`ext4_super_block`)的数据来确定。如果超级块的魔法数匹配EXT4_SUPER_MAGIC,并且文件系统状态有效,且不需恢复,则返回成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



判断分区中是否有ext4文件系统:

static int ckext4(char *fsdev)

{

int fd;

int ret;

struct ext4_super_block sb;

 

//if (setjmp(setjmp_env))

//return -1;

fd = open(fsdev, O_RDWR);

if (fd < 0)

return -1;

ret = lseek64(fd, 1024, SEEK_SET);

if (ret < 0)

goto ckext4_fs_error;

ret = read(fd, &sb, sizeof(sb));

if (ret < 0)

goto ckext4_fs_error;

if (ret != sizeof(sb))

goto ckext4_fs_error;

if (sb.s_magic != EXT4_SUPER_MAGIC)

goto ckext4_sbmagic_error;

if ((sb.s_state & EXT4_VALID_FS) != EXT4_VALID_FS)

goto ckext4_sbstatus_error;

if(sb.s_feature_incompat & EXT4_FEATURE_INCOMPAT_RECOVER==0)

goto ckext4_needrecovery_error;

close(fd);

return 0;

 

ckext4_fs_error:

close(fd);

return -2;

ckext4_sbmagic_error:

close(fd);

return -3;

ckext4_sbstatus_error:

close(fd);

return -4;

ckext4_needrecovery_error:

close(fd);

return -5;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值