当前位置: 技术问答>linux和unix
USB热插拔问题
来源: 互联网 发布时间:2016-12-01
本文导语: 目前正在做一个DSL路由的项目,这个路由带USB功能。 客户要求USB挂载到路由上后,如果有创建用户则访问需要用户名和密码,如果没有则不需要密码。 当然这些工作还接触不到USB驱动,只要修改samba的配置文件就可...
目前正在做一个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底层驱动向它发送消息的代码。
客户要求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底层驱动向它发送消息的代码。
|
你是用什么来管理热插拔设备的,UDEV?还是MDEV?还是kernel自己的hotplug。如果是前两个之一的话,都可以写配置文件,可以监视热插拔设备的插入和拔出等各种状态的变化,同时根据不同的动作,执行一些脚本。
这样就可以解决你的问题了。可以google下“Linux 动态设备管理”。
这样就可以解决你的问题了。可以google下“Linux 动态设备管理”。