LTP(Linux Test Project)学习(六)—— 问题分析:chattr命令的限制

本文详细介绍了在使用LTP进行Linux测试时遇到的一个问题,即在运行utimensat_tests.sh时遇到'chattr: Inappropriate ioctl for device while reading flags on testfile'错误。通过复现问题、分析错误、查阅资料和源码,发现该问题是由于tmpfs文件系统不支持chattr命令的某些特性。作者提供了问题的复现步骤和解决方案,并分享了问题分析的过程与技巧。

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

(挑选本人之前发现的bug,可以更加深入讲解下问题分析历程)
对应补丁commit:9af831cdf6d2328e6f6fcd85dd1d5523fd8681d3

BUG发现

个人在学习linux或linux相关代码实践时,喜欢使用qemu启动虚拟机(启动快,方便替换内核)。
在刚开始接触ltp时候,便开始跨平台执行ltp(想看下ltp的兼容性),当时FAIL很多用例,然后逐个开始分析,直到utimensat_tests.sh,报错:” chattr: Inappropriate ioctl for device while reading flags on testfile”。

BUG分析

1.初步分析
使用过LTP的都知道,LTP的成功、提示或者失败都伴随着TPASS/TCONF/TFAIL,但是” chattr: Inappropriate ioctl for device while reading flags on testfile”错误前面并没有LTP内置的提示信息标记,所以首次看到就感觉是一个异常情况,用例中未发现的异常情况。

2.问题复现&定位
对于shell脚本的定位方法,最好的办法就是sh –x command方式。
1)首先cd到testcases/bin目录下,直接sh utimensat_tests.sh,这样是为了复现问题。可能会无法执行,原因是需要添加LTP_ROOT环境变量、将脚本中 . xxx.sh改成 . ./xxx.sh(小问题,你可以试着解决)。
2)然后 sh utimensat_tests.sh发现问题既然可以复现,则执sh –x utimensat_tests.sh &>log。 -x参数会将shell脚本的执行流程打印出来,包括中间变量赋值,执行日志导入log。
3)最后打开utimensat_tests.sh和log执行流程每行对比,即可找到报错位置所在(此时双屏更好哦)。
最终发现命令挂在 chattr –ai FILE( F I L E 这 里 ( FILE可以在出错位置添加echo $FILE打印出来)
复现步骤:

# echo "testfile" > testfile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello小崔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值