相关的Issue

#I44WH1:文件系统支持sd卡热插拔

原因(目的、解决的问题等)

文件系统当前不支持热插拔,拔掉sdcard后,未释放vfs中对应资源

描述(做了什么,变更了什么)

当前驱动已经保证热插拔功能,在sd卡掉电时会调用los_disk_deinit接口。文件系统需要提供一个强制umount掉sd卡对应分区的功能,这个功能需要考虑两个问题:
1、已经调下去的接口,要正常返回错误码,不能崩溃——这个驱动可以保证
2、未来继续调下去的接口,要拦截掉,这样可以把下面mount点的资源释放掉
我们通过提供一个ForceUmount接口来解决问题2,这个接口做了3件事
1、找到所有mount点下已经打开的File,把File的ops替换成只会返回错误码的ops,同时释放File中的私有资源
2、释放mount点下所有pathcache和所有引用计数为0的vnode。不为0的vnode,替换ops为只会返回错误码的ops,同时释放vnode中的私有资源
3、释放moumt点本身,解除和驱动的关联

由于在整个过程中,未对file和vnode进行直接的释放,不会影响已经打开的文件的各种接口,只是调用这些接口都会返回IO错误。
同时,遗留的file会在用户自行close或者进程挂掉时自动释放。对应的vnode,会在内存不足时,自动回收

测试用例(新增、改动、可能影响的功能)

编写测试用例不断访问sdcard中某文件,对其进行各种操作的同时,反复拔插sdcard