U盘USB驱动相关问题

空白呀 2019-01-09 04:29:35
我这边有一个U盘,开发板跑的是linux系统,我U盘插入开发板,正常使用。
但是从开发板拔出,接入到win7系统的电脑中后,提示修复扫描U盘。
请问大神们,这是什么情况导致的?系统差异么?请大神解释一下。谢谢
我挂载U盘的方式是读写挂载的。
我插入开发板没有使用U盘再拔出插回电脑也会提示修复扫描。




...全文
829 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sazhufa 2019-02-28
  • 打赏
  • 举报
回复
引用 3 楼 空白呀 的回复:
这个老哥说的没错,就是在挂载的时候,调用了一个fill_super()函数,然后调了fat_fill_super函数,最后调了fat_set_state函数,把fat32.state这个状态变了。。。然后没做安全删除,没清掉这个位,所以在windows上面才会提示。
老哥,问一下,这个fat32.state标志你了解多少?去掉大概会影响什么?麻烦解答一下谢谢。


这个Dirty就是为了在没有安全卸载时可以”在未来通知用户“,你去掉也行,但是要确保这个设备使用直接写入,不要经过pagecache. 具体代码我好久没搞了,应该跟O_DIRECT 打开标志有关.
世黎 2019-01-18
  • 打赏
  • 举报
回复
可能是热插拔的时候,fat32.state的状态位该了, 也有可能是你板子上的系统没有完善好导致的
weixin_44561557 2019-01-17
  • 打赏
  • 举报
回复
就是在挂载的时候,调用了一个fill_super()函数,然后调了fat_fill_super函数,最后调了fat_set_state函数,把fat32.state这个状态变了。。。然后没做安全删除,没清掉这个位,所以在windows上面才会提示
空白呀 2019-01-17
  • 打赏
  • 举报
回复
这个老哥说的没错,就是在挂载的时候,调用了一个fill_super()函数,然后调了fat_fill_super函数,最后调了fat_set_state函数,把fat32.state这个状态变了。。。然后没做安全删除,没清掉这个位,所以在windows上面才会提示。 老哥,问一下,这个fat32.state标志你了解多少?去掉大概会影响什么?麻烦解答一下谢谢。
sazhufa 2019-01-15
  • 打赏
  • 举报
回复
我猜大概是挂载后,磁盘上某些标志位被改了,比如以下代码:
typedef struct {
BYTE fs_type; /* FAT type (0, FS_FAT12, FS_FAT16, FS_FAT32 or FS_EXFAT) */
BYTE pdrv; /* Hosting physical drive of this volume */
BYTE n_fats; /* Number of FAT copies (1,2) */
BYTE wflag; /* win[] flag (b0:win[] is dirty) */
BYTE fsi_flag; /* FSINFO flags (b7:Disabled, b0:Dirty) */
... ...
有几个标志位在挂载后就Dirty了(具体代码就看不了,大致也差不多吧),所以Win7就告警提示,如果有可能,先umount再拔盘试试。
空白呀 2019-01-10
  • 打赏
  • 举报
回复
目前大概确定是sb_bread()函数调用失败才导致这样的结果。还请大神指教一下

1,324

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧