USB热插拔问题

目前正在做一个DSL路由的项目,这个路由带USB功能。
客户要求USB挂载到路由上后,如果有创建用户则访问需要用户名和密码,如果没有则不需要密码。
当然这些工作还接触不到USB驱动,只要修改samba的配置文件就可以了。
现在的问题是,正常的热插拔没有问题,但是用户如果在拔调USB前没有把打开的文件关闭,则第二次插入有问题。
(用户是LAN侧通过运行\\192.168.1.1访问)
文件未关闭情况下拔出USB,用户仍然还能进入之前打开的目录,路由串口打印错误
文件未关闭情况下拔出USB,第二次插入U盘时卷名变成usb2_1(第一次是usb1_1,正常热插拔每次都是usb1_1)
从串口打印来看linux 的USB底层驱动是正确的,是应用层出的问题,没把文件系统里inode的一些东西删除调。
我做了一个实验,用户通过LAN侧访问USB的时候,如果把接到用户的网线给拔掉,然后再拔掉USB也是不会出现问题的,
从这也可以看出文件系统里面的一些信息是有办法删除的。

我想问的问题是:1 在应用层收到USB被拔掉的消息以后有没有办法先把文件系统里面的一些记录给删除。
2. USB底层驱动是怎么向hotplug.c这里的main函数发送消息的,我实在在代码里面找不到USB底层驱动向它发送消息的代码。

作者: wyjq395   发布时间: 2011-05-21

自己先刷新一把

作者: wyjq395   发布时间: 2011-05-22