iozone -a fsync: I/O error
iozone: interrupted
exit iozone
问题表现是手机老化后重启不开机。检查不开机Log,发现/data/system/packages.xml文件有损坏,pull 离线日志,发现出问题前后的日志也不能pull,pull出来的离线日志解压后有缺失,cat损坏的文件,提示I/O error。
cat:/data/system/packages.xml: I/O error
1 检查文件权限
ls /data/system/packages.xml -lhtZ
权限正常
2 检查出问题前后是否有异常重启,或者异常掉电
发现正常开机状态下,也有文件损坏的log出来。
3 进一步定位,发现在跑emmc测试,iozone -a时出现的问题
单跑iozone -a压测,发现问题必现
iozone -a fsync: I/O error
iozone: interrupted
exit iozone
复现问题时同步抓logcat和串口,串口没有看到有效信息,logcat中发现有以下异常信息。
02-08 00:28:00.997 I/ ( 0): attempt to access beyond end of device
02-08 00:28:00.997 I/dm-8 ( 0): rw=3, want=53220352, limit=53083864
02-08 00:28:01.043 I/F2FS-fs (dm-8)( 0): Issue discard(6612608, 6612608, 39936) failed, ret: -5
02-08 00:28:01.091 I/ ( 0): attempt to access beyond end of device
02-08 00:28:01.091 I/dm-8 ( 0): rw=3, want=53260288, limit=53083864
发现访问的data空间有越界,检查分区userdata分区是不是超了,userdata分区修改到合适大小,问题不再复现。
iozone要编译进软件,需要在.mk里面添加
LOCAL_PROPRIETARY_MODULE := true
源码下载地址:http://www.iozone.org/