一个也是关于文件系统缓存的问题

milson 2006-05-22 08:19:35
系统有SD卡,当写入文件完毕后立刻拔出SD卡,很容易造成文件破坏;不知道有什么好办法。我实际的操作是:拷贝文件到SD卡,拷贝完毕后拔出SD卡,此时SD卡中的文件被破坏。除了sync/umount之外各位还有什么办法解决这个问题?
...全文
186 点赞 收藏 7
写回复
7 条回复
mouse_fox 2006年05月24日
如果是在硬件上的话应该是检测是否有读写片选,而且在驱动中应该有信号量保护的。
应该有接口检测信号量是否释放然后才允许拔出。一个可行的办法是当型号量释放时,关闭usb的电源然后告知用户未断电时不准拔出。
回复 点赞
joyself 2006年05月23日
这种情况没办法的.
我们也碰到这种问题, 用户何时拔出SD卡是不确定的,所以不可以做什么操作
回复 点赞
zdhzidy 2006年05月23日
Windows不也是一样拔出USB这个设备之前要停用,所以Linux在拔出之前umount一下也是很合理的啊
回复 点赞
geopower 2006年05月23日
在文件传输的开始和结束自动加载mount 和 umount命令,写个判断硬件设备是否存在,如果F提示插入设备.
回复 点赞
ghtsao 2006年05月23日
你说的这个问题我觉得是现在硬件还不支持的,umount的作用相当于让二者断开必要的联系。这个动作在物理脱离的情况下是怎么都不可能完成的,除非你拨下USB的过程中系统能监测到,在这样一个短暂的时刻完成UMOUNT的操作,本质上,这需要有硬件来支持正在拨除的起始和拨除结束的状态监测,目前的USB只能知道拔除设备结束的事件,而无法判断拔除开始的事件,也就无法在两个事件之间做必要的UMOUNT操作。
回复 点赞
milson 2006年05月23日
即使我使用fsync把数据写进SD卡,但是我不可能还要umount吧;这种情况可以设想一下手机中使用SD卡。如果不umount就拔出卡会出错的,那么如何才能在用户拔掉卡之前umount呢?
回复 点赞
flinymengw4u 2006年05月22日
写一个后台进程,监控usb端口
回复 点赞
发动态
发帖子
Linux_Kernel
创建于2007-08-27

3140

社区成员

1.7w+

社区内容

Linux/Unix社区 内核源代码研究区
社区公告
暂无公告