tome
驱动中牛
驱动中牛
  • 注册日期2002-02-21
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
阅读:1165回复:12

请LINUX高手指点(200分)

楼主#
更多 发布于:2003-02-25 20:59


本贴本想发在技术论坛,但怕没人注意,斗胆发在水坛,请斑竹见谅。

小弟的测试环境如下:LINUX 6.2  内核2.2.14 。 在这种测试环境下,小弟作了对文件的一些读写和删除操作,也就是(fread, fwrite,unlink)等一些很弱的编程。本来这是极简单的,小弟写了测试程序来测试,跑了一天,正常情况下没问题。
  可在极少数的情况下(这样的情况小弟无法重现,极偶然),文件系统发生了异常!!!!出错信息如下:
  
   Filesystem panic (dev 03:01)
   fat_free : deleting beyond EOF
   File system has been set read_only
  
 小弟再用vi或cp,mv等命令操作时,系统会报错,说文件是只读属性,无法编辑。
  小弟十分困惑,重启计算机后,vi或cp,mv等命令操作时,一切正常,再用我写的对文件操作程序来测试, 一切正常,这种异常情况,不能重现,不知道什么时候发生异常,当然这种情况很少见,但时不时出现,一直是我程序中隐含的大问题。
 
  出现这种情况后,小弟查了LINUX内核源程序,发现一些迹象,在

/usr/src/linux/fs/fat 目录下misc.c程序找到了这样一个函数

void fat_fs_panic(struct super_block *s,const char *msg)
{
int not_ro;

not_ro = !(s->s_flags & MS_RDONLY);
if (not_ro) s->s_flags |= MS_RDONLY;
printk(\"Filesystem panic (dev %s).\\n  %s\\n\",

kdevname(s->s_dev), msg);
if (not_ro)
printk(\"  File system has been set read-only\\n\");
}

  小弟认为操作系统的报错信息是这个函数产生的,可是小弟对LINUX内核程序不是熟悉,不知道这种错误是怎样产生的,在什么情况下产生?

  小弟对这个错误十分不解:为什么这样的问题不能频繁重现;是不是我在编译内核时留下的隐患;还是用户层程序中的BUGS???

   请各位高手指点!!!
不错 ,不错,真不错。
tome
驱动中牛
驱动中牛
  • 注册日期2002-02-21
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-26 10:56
hometown老大说的很是到位,我对文件的操作的确是在DOS分区上,
但我是 MOUNT -T VFAT /DEV/HDA1 /MNT  这个操作我是作的,然后我才对文件进行了一些读写操作, 我把DOS分区MOUNT到/MNT 这个目录下,是有读写权限的的(手工的命令mv cp 等是正常),可在极少数的情况下,文件系统发生了异常, 可是为什么这样的错误不能重现??  再请老大指点!!!
不错 ,不错,真不错。
tome
驱动中牛
驱动中牛
  • 注册日期2002-02-21
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-26 11:25
hometown老大,分我是照单全给了,还是请你多多指点,毕竟,你说的这几个可能性,我都作过,可不能不管我了



 ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;) ;)
不错 ,不错,真不错。
tome
驱动中牛
驱动中牛
  • 注册日期2002-02-21
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-26 15:11
自己顶一下!!!
不错 ,不错,真不错。
tome
驱动中牛
驱动中牛
  • 注册日期2002-02-21
  • 最后登录2007-11-28
  • 粉丝0
  • 关注0
  • 积分99分
  • 威望11点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-26 17:39
[quote]自己顶一下!!!
不知道你有没有对shell做删除, 这个原因不是太明白, 不过通常来说, 不可重复的错误一般是软件的原因, 就这个来看, 很有可能是FAT的接口实现有BUG。 我还没有研究FAT在LINUX底下提供的接口, 不好意思白要了你200分啦~, 不过如果可以描述的清楚的话, 我可以把那些代码看看, 看能不能找到原因 :( :( :( :( [/quote]

我的确是对SHELL作了删除,hometown兄真是一针见血,我也怀疑是我的软件错误,hometown兄对我的指点,小弟不胜感激,hometown兄再说见外的话,小弟可愧不敢当!!

我会再仔细的查一遍程序,相信会找到的, hometown兄的指点,小弟再次表示感谢!!
不错 ,不错,真不错。
游客

返回顶部