[RK3566-Android11] U盘频繁快速插拔识别问题

问题描述

做老化测试时,在使用U盘频繁快速插拔的情况下,SDCard目录会突然被Kill掉,然后又重新挂载上,这会导致系统及APP的数据因为读写异常,从而界面卡死正常U盘插拔不应该导致内部存储卸载


解决方案:

SDK根目录/system/vold 打上以下补丁解决

diff --git a/Process.cpp b/Process.cpp
index 277d6a39..62d51a22 100644
--- a/Process.cpp
+++ b/Process.cpp
@@ -39,6 +39,7 @@#include <android-base/strings.h>#include "Process.h"
+#include "Utils.h"using android::base::StringPrintf;@@ -127,7 +128,7 @@ int KillProcessesWithMounts(const std::string& prefix, int signal) {return pids.size();}-int KillProcessesWithOpenFiles(const std::string& prefix, int signal) {
+int KillProcessesWithOpenFiles(const std::string& prefix, int signal, bool killFuseDaemon) {std::unordered_set<pid_t> pids;auto proc_d = std::unique_ptr<DIR, int (*)(DIR*)>(opendir("/proc"), closedir);
@@ -164,7 +165,11 @@ int KillProcessesWithOpenFiles(const std::string& prefix, int signal) {}if (found) {
-            pids.insert(pid);
+            if (!IsFuseDaemon(pid) || killFuseDaemon) {
+                pids.insert(pid);
+            } else {
+                LOG(WARNING) << "Found FUSE daemon with open file. Skipping...";
+            }}}if (signal != 0) {diff --git a/Process.h b/Process.h
index 1c59812a..a56b9ceb 100644
--- a/Process.h
+++ b/Process.h
@@ -20,7 +20,7 @@namespace android {namespace vold {-int KillProcessesWithOpenFiles(const std::string& path, int signal);
+int KillProcessesWithOpenFiles(const std::string& path, int signal, bool killFuseDaemon = true);int KillProcessesWithMounts(const std::string& path, int signal);}  // namespace volddiff --git a/Utils.cpp b/Utils.cpp
index cef0f399..9ff79202 100644
--- a/Utils.cpp
+++ b/Utils.cpp
@@ -525,24 +525,25 @@ status_t KillProcessesWithMountPrefix(const std::string& path) {}status_t KillProcessesUsingPath(const std::string& path) {
-    if (KillProcessesWithOpenFiles(path, SIGINT) == 0) {
+    if (KillProcessesWithOpenFiles(path, SIGINT, false /* killFuseDaemon */) == 0) {return OK;}if (sSleepOnUnmount) sleep(5);-    if (KillProcessesWithOpenFiles(path, SIGTERM) == 0) {
+    if (KillProcessesWithOpenFiles(path, SIGTERM, false /* killFuseDaemon */) == 0) {return OK;}if (sSleepOnUnmount) sleep(5);-    if (KillProcessesWithOpenFiles(path, SIGKILL) == 0) {
+    if (KillProcessesWithOpenFiles(path, SIGKILL, false /* killFuseDaemon */) == 0) {return OK;}if (sSleepOnUnmount) sleep(5);// Send SIGKILL a second time to determine if we've// actually killed everyone with open files
-    if (KillProcessesWithOpenFiles(path, SIGKILL) == 0) {
+    // This time, we also kill the FUSE daemon if found
+    if (KillProcessesWithOpenFiles(path, SIGKILL, true /* killFuseDaemon */) == 0) {return OK;}PLOG(ERROR) << "Failed to kill processes using " << path;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/91510.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/91510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Golang】Go语言Map数据类型

Go语言Map数据类型 文章目录Go语言Map数据类型一、Map1.1.1、map定义1.1.2、map的基本使用1.1.3、判断某个键是否存在1.1.4、map的遍历1.1.5、使用delete()函数删除键值对1.1.6、按照指定顺序遍历map1.1.7、元素为map类型的切片1.1.8、值为切片类型的map一、Map map是一种无序…

Orange的运维学习日记--23.Linux计划任务详解

Orange的运维学习日记–23.Linux计划任务详解 文章目录Orange的运维学习日记--23.Linux计划任务详解一次性计划任务atd 服务at 命令基本语法交互式示例脚本文件示例timespec 格式示例查看与管理任务查看当前队列查看任务详细内容删除任务用户权限控制用户周期性计划任务查看任务…

Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)

目录 前言 一、系统准备 二、安装 MySQL 8.0.36 1. 查看可用版本 2.如果没有对应版本则需要手动下载mysql-apt-config&#xff08;有则跳过&#xff09; 2.1下图是mysql-apt-config各版本对应的mysql版本 2.2下载mysql apt repository 2.3安装 MySQL APT Repository 包 …

【LLM】讲清楚MLA原理

需要你对MHA、MQA、GQA有足够了解&#xff0c;相信本文能帮助你对MLA有新的认识。 本文内容都来自https://www.youtube.com/watch?v0VLAoVGf_74&#xff0c;如果阅读本文出现问题&#xff0c;建议直接去看一遍。 按照Deepseek设定一些参数值&#xff1a;输入token长度n10&…

谷歌采用 Ligero 构建其 ZK 技术栈

1. 引言 前序博客有&#xff1a; Ligero 和 Ligetron 中的 MPC 和 ZKLigetron&#xff1a;Nim Network开发的针对AI的zkVMLigetron&#xff1a;基于MPC-In-The-Head范式的zkVM简介 在隐私保护身份验证领域迈出重要一步&#xff0c;谷歌最近宣布 将零知识证明&#xff08;ZKP…

Flutter渲染引擎:Impeller和Skia

一、Impeller 渲染引擎的发布时间Impeller 是 Flutter 团队为解决 Skia 引擎在移动端&#xff08;尤其是 iOS 平台&#xff09;的性能问题而开发的全新渲染引擎&#xff0c;其发展历程如下&#xff1a;首次公开&#xff1a;2021 年 Google I/O 大会上首次提及&#xff0c;作为 …

网络编程-加密算法

目录 一.网络编程基础 1. 概述 2. IP地址 3. 域名 4. 网络模型 5. 常用协议 6. 小结 二.TCP编程 1. 什么是Socket&#xff1f; 2. 服务器端 3. 客户端 4. Socket流 5. 小结 三.UDP编程 1. 概述 2. 服务器端 3. 客户端 4. 小结 案例&#xff1a; 四.加密算法 …

【网络工程师软考版】网络安全

任何形式的网络服务都会导致安全方面的风险&#xff0c;问题是如何将风险降到最低程度&#xff0c;目前的网络安全措施有数据加密、数字签名、身份认证、防火墙、特征过滤等。所涉内容&#xff1a;1、网络安全基础2、加密技术与哈希算法3、数字签名4、数字证书5、VPN技术6、防火…

深入浅出设计模式——创建型模式之建造者模式 Builder

文章目录建造者模式简介建造者模式结构建造者模式代码实例定义产品类House定义建造者定义抽象建造者AbstractBuilder定义具体建造者定义指挥者客户端代码示例运行结果建造者模式总结代码仓库建一栋房子总共分几步&#xff1f;建造者模式告诉你答案&#xff01;“把大象装冰箱&a…

OpenVLA: 论文阅读 -- 开源视觉-语言-行动模型

更多内容&#xff1a;XiaoJ的知识星球 目录OpenVLA&#xff1a;开源视觉-语言-行动模型1. 介绍2. 相关工作1&#xff09;视觉条件语言模型&#xff08;Visually-Conditioned Language Models&#xff09;2&#xff09;通用型机器人策略&#xff08;Generalist Robot Policies&a…

JavaWeb(苍穹外卖)--学习笔记15(分页查询PageHelper)

前言 终于开始学习做项目了&#xff0c;本篇文章是学习B站黑马程序员苍穹外卖的学习笔记&#x1f4d1;。我的学习路线是Java基础语法-JavaWeb-做项目&#xff0c;管理端的功能学习完之后&#xff0c;就进入到了用户端微信小程序的开发&#xff0c;这篇文章来看看分页查询&#…

金融专题|某跨境支付机构:以榫卯企业云平台 VPC 功能保障业务主体安全

作者&#xff1a;SmartX 金融团队 金融机构在信息化建设时面临诸多数据合规要求&#xff0c;例如&#xff1a;不同业务区域之间互相隔离、数据库仅能由关联的应用服务器访问、仅有特定的服务器允许被外网访问等。对此&#xff0c;某跨境支付机构以 SmartX 榫卯企业云平台构建私…

Win10下python环境变量呼出微软应用商店

以下是三种彻底解决 Windows 10 的 CMD 中运行 python 命令弹出应用商店问题的方法​​方法一&#xff1a;调整环境变量优先级​-或者直接删除微软应用商店的环境变量%USERPROFILE%\AppData\Local\Microsoft\WindowsApp​​​操作步骤​​打开系统环境变量设置&#xff08;右键…

字节跳动“扣子”(Coze)开源:AI智能体生态的技术革命

&#xff08;以下借助 DeepSeek-R1 辅助整理&#xff09; 在2025年7月26日的深夜&#xff0c;GitHub上悄然出现的两个仓库——Coze Studio和Coze Loop&#xff0c;在48小时内狂揽超过9,000颗Star。字节跳动以Apache 2.0许可证将自家AI智能体平台的核心技术彻底开源。 “当所有人…

Camx-usecase ID和pipeline的匹配源码解读

组件关系整体流程&#xff1a;camxhal3.cpp:704 open()camxhal3.cpp:1423 configure_streams()chxextensionmodule.cpp:2810 InitializeOverrideSessionchxusecaseutils.cpp:850 GetMatchingUsecase()chxadvancedcamerausecase.cpp:4729 Initialize()chxadvancedcamerausecase.…

日志管理进入「对话式」时代:日志易MCP Server落地实录

01 背景&#xff1a;MCP协议介绍在AI蓬勃发展的当下&#xff0c;大型语言模型&#xff08;LLM&#xff09;虽展现出强大潜力&#xff0c;却受困于与外部资源连接的难题。数据分散、接口繁杂&#xff0c;致使AI模型难以灵活对接本地资源与远程服务&#xff0c;极大限制了其响应质…

django-3模型操作

from django.db import modelsclass Book(models.Model):title models.CharField(max_length200) # 书名author models.CharField(max_length100) # 作者publish_date models.DateField() # 出版日期price models.DecimalField(max_digits10, decimal_places2) # 价格s…

【绘制图像轮廓】——图像预处理(OpenCV)

目录 1 什么是轮廓 2 寻找轮廓 2.1 mode参数 2.2 method参数 3 绘制轮廓 1 什么是轮廓 轮廓是一系列相连的点组成的曲线&#xff0c;代表了物体的基本外形。轮廓是连续的&#xff0c;边缘不一定连续。轮廓是一个闭合的、封闭的形状。 轮廓的作用&#xff1a; 形状分析 目…

嵌入式 Linux 深度解析:架构、原理与工程实践(增强版)

嵌入式 Linux 深度解析&#xff1a;架构、原理与工程实践&#xff08;增强版&#xff09; 目录嵌入式 Linux 深度解析&#xff1a;架构、原理与工程实践&#xff08;增强版&#xff09;第一章 嵌入式 Linux 基础概念1.1 定义与核心特征1.2 典型架构栈深度解析第二章 Linux 文件…

xcode swift项目运行、连接真机运行报错,引入文件夹失败

最近乱七八糟解决了很多报错&#xff0c;看着记录点吧 xcode版本&#xff1a;16 failed to emit precompiled header ‘/Users/yuqing/Library/Developer/Xcode/DerivedData/cloudspace-ios-ejldldcfhouqnretchuzoewmsqkg/Build/Intermediates.noindex/PrecompiledHeaders/spic…