格式化手机内置sdcard失败

lvhua_2004 2015-11-27 09:19:43
小弟在做一个firefox os手机项目, 这个系统底层和android都是一样的,只是框架层不用。 在firefox settings应用有个功能是格式手机内置的sdcard, 很不幸的是格式化失败,格式化后文件并没有被删除掉。
从错误日志上看, 在格式化的时候,android下面的vold并没有能正确的获取到这个设备所对应的设备节点。在设备上这个内置sdcard所对应的节点是 /dev/block/vold/179:30, 而日志里是 /dev/block/vold/179:62。

01-01 00:27:31.579: I/newfs_msdos(234): /system/bin/newfs_msdos: /dev/block/vold/179:62: No such file or directory
01-01 00:27:31.579: E/Vold(234): Format failed (unknown exit code 1)

在系统里,在格式化之后,都会对这个设备进行再一次mount, 从日志里看到,在mount时却成功了,找到了正确的设备节点
01-01 00:27:31.579: I/AutoMounter(253): UpdateState: Mounting sdcard
01-01 00:27:31.579: I/Vold(234): /dev/block/vold/179:30 being considered for volume sdcard
01-01 00:27:31.579: D/Vold(234): Volume sdcard state changing 1 (Idle-Unmounted) -> 3 (Checking)

在格式化的时候回去查找这个设备节点根据主设备号和次设备号

dev_t diskNode = getDiskDevice();
dev_t partNode =
MKDEV(MAJOR(diskNode),
MINOR(diskNode) + (formatEntireDevice ? 1 : mPartIdx));

而在mount的时候是通过以下去获取设备号

int DirectVolume::getDeviceNodes(dev_t *devs, int max) {

if (mPartIdx == -1) {
// If the disk has no partitions, try the disk itself
if (!mDiskNumParts) {
devs[0] = MKDEV(mDiskMajor, mDiskMinor);
return 1;
}

int i;
for (i = 0; i < mDiskNumParts; i++) {
if (i == max)
break;
devs[i] = MKDEV(mDiskMajor, mPartMinors[i]);
}
return mDiskNumParts;
}
devs[0] = MKDEV(mDiskMajor, mPartMinors[mPartIdx -1]);
return 1;
}

我有以下几个地方不明白:

1. mPartIdx是指的什么东西? 分区索引?
2. 为什么当格式化整个设备的时候, 需要在次设备号上加1,如果不是格式化整个设备就加上mPartIdx。
3. mPartMinors 和 mPartIdx有什么关系。

希望哪位指点以下,不甚感激。
...全文
255 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvhua_2004 2016-05-10
  • 打赏
  • 举报
回复
很早就解决了哈,先前只是顾着提问题,居然还没有结贴。 问题的原因是是Vold构造了一个错误的设备节点名称,在代码里使用“MINOR(diskNode) + mPartIdx”, 实际上"mPartIdx"就是次设备号,不需要加“MINOR(diskNode)", 这相关的文件是Volume.cpp. 修改前的代码: dev_t partNode = MKDEV(MAJOR(diskNode), MINOR(diskNode) + (formatEntireDevice ? 1 : mPartIdx)); 修改后代码: dev_t partNode = MKDEV(MAJOR(diskNode), (formatEntireDevice ? (MINOR(diskNode)+1) : mPartIdx)); 这样修改后问题解决了,暂时没有发现引起其它问题。
小小周程序猿 2015-11-27
  • 打赏
  • 举报
回复
楼主,有解决吗,我这几天也遇到同样的问题?

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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