Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Startup Init Lite
提交
2034d773
S
Startup Init Lite
项目概览
OpenHarmony
/
Startup Init Lite
8 个月 前同步成功
通知
3
Star
37
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Startup Init Lite
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
2034d773
编写于
1月 10, 2022
作者:
O
openharmony_ci
提交者:
Gitee
1月 10, 2022
浏览文件
操作
浏览文件
下载
差异文件
!225 在userdata.img挂载前调整其大小并检查修复.
Merge pull request !225 from xlfeng/master
上级
3fb0f722
057657d8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
115 addition
and
1 deletion
+115
-1
interfaces/innerkits/fs_manager/fstab_mount.c
interfaces/innerkits/fs_manager/fstab_mount.c
+115
-1
未找到文件。
interfaces/innerkits/fs_manager/fstab_mount.c
100755 → 100644
浏览文件 @
2034d773
...
...
@@ -36,6 +36,7 @@ extern "C" {
#define FS_MANAGER_BUFFER_SIZE 512
#define BLOCK_SIZE_BUFFER (64)
#define RESIZE_BUFFER_SIZE 1024
bool
IsSupportedFilesystem
(
const
char
*
fsType
)
{
...
...
@@ -153,6 +154,97 @@ MountStatus GetMountStatusForMountPoint(const char *mp)
return
status
;
}
static
int
DoResizeF2fs
(
const
char
*
device
,
const
unsigned
long
long
size
)
{
char
*
file
=
"/system/bin/resize.f2fs"
;
if
(
access
(
file
,
F_OK
)
!=
0
)
{
INIT_LOGE
(
"resize.f2fs is not exists."
);
return
-
1
;
}
int
ret
=
0
;
if
(
size
<=
0
)
{
char
*
cmd
[]
=
{
file
,
"-s"
,
(
char
*
)
device
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
ret
=
ExecCommand
(
argc
,
argv
);
}
else
{
unsigned
long
long
realSize
=
size
*
((
unsigned
long
long
)
1024
*
1024
/
512
);
char
sizeStr
[
RESIZE_BUFFER_SIZE
]
=
{
0
};
sprintf_s
(
sizeStr
,
RESIZE_BUFFER_SIZE
,
"%llu"
,
realSize
);
char
*
cmd
[]
=
{
file
,
"-s"
,
"-t"
,
sizeStr
,
(
char
*
)
device
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
ret
=
ExecCommand
(
argc
,
argv
);
}
return
ret
;
}
static
int
DoFsckF2fs
(
const
char
*
device
)
{
char
*
file
=
"/system/bin/fsck.f2fs"
;
if
(
access
(
file
,
F_OK
)
!=
0
)
{
INIT_LOGE
(
"fsck.f2fs is not exists."
);
return
-
1
;
}
char
*
cmd
[]
=
{
file
,
"-a"
,
(
char
*
)
device
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
return
(
ExecCommand
(
argc
,
argv
));
}
static
int
DoResizeExt
(
const
char
*
device
,
const
unsigned
long
long
size
)
{
char
*
file
=
"/system/bin/resize2fs"
;
if
(
access
(
file
,
F_OK
)
!=
0
)
{
INIT_LOGE
(
"resize2fs is not exists."
);
return
-
1
;
}
int
ret
=
0
;
if
(
size
<=
0
)
{
char
*
cmd
[]
=
{
file
,
"-f"
,
(
char
*
)
device
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
ret
=
ExecCommand
(
argc
,
argv
);
}
else
{
char
sizeStr
[
RESIZE_BUFFER_SIZE
]
=
{
0
};
sprintf_s
(
sizeStr
,
RESIZE_BUFFER_SIZE
,
"%lluM"
,
size
);
char
*
cmd
[]
=
{
file
,
"-f"
,
(
char
*
)
device
,
sizeStr
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
ret
=
ExecCommand
(
argc
,
argv
);
}
return
ret
;
}
static
int
DoFsckExt
(
const
char
*
device
)
{
char
*
file
=
"/system/bin/e2fsck"
;
if
(
access
(
file
,
F_OK
)
!=
0
)
{
INIT_LOGE
(
"e2fsck is not exists."
);
return
-
1
;
}
char
*
cmd
[]
=
{
file
,
"-y"
,
(
char
*
)
device
,
NULL
};
int
argc
=
ARRAY_LENGTH
(
cmd
);
char
**
argv
=
(
char
**
)
cmd
;
return
ExecCommand
(
argc
,
argv
);
}
static
int
Mount
(
const
char
*
source
,
const
char
*
target
,
const
char
*
fsType
,
unsigned
long
flags
,
const
char
*
data
)
{
...
...
@@ -204,6 +296,28 @@ int MountOneItem(FstabItem *item)
if
(
FM_MANAGER_WAIT_ENABLED
(
item
->
fsManagerFlags
))
{
WaitForFile
(
item
->
deviceName
,
WAIT_MAX_COUNT
);
}
if
(
strcmp
(
item
->
fsType
,
"f2fs"
)
==
0
&&
strcmp
(
item
->
mountPoint
,
"/data"
)
==
0
)
{
int
ret
=
DoResizeF2fs
(
item
->
deviceName
,
0
);
if
(
ret
!=
0
)
{
INIT_LOGE
(
"Failed to resize.f2fs dir %s , ret = %d"
,
item
->
deviceName
,
ret
);
}
ret
=
DoFsckF2fs
(
item
->
deviceName
);
if
(
ret
!=
0
)
{
INIT_LOGE
(
"Failed to fsck.f2fs dir %s , ret = %d"
,
item
->
deviceName
,
ret
);
}
}
else
if
(
strcmp
(
item
->
fsType
,
"ext4"
)
==
0
&&
strcmp
(
item
->
mountPoint
,
"/data"
)
==
0
)
{
int
ret
=
DoResizeExt
(
item
->
deviceName
,
0
);
if
(
ret
!=
0
)
{
INIT_LOGE
(
"Failed to resize2fs dir %s , ret = %d"
,
item
->
deviceName
,
ret
);
}
ret
=
DoFsckExt
(
item
->
deviceName
);
if
(
ret
!=
0
)
{
INIT_LOGE
(
"Failed to e2fsck dir %s , ret = %d"
,
item
->
deviceName
,
ret
);
}
}
int
rc
=
Mount
(
item
->
deviceName
,
item
->
mountPoint
,
item
->
fsType
,
mountFlags
,
fsSpecificData
);
if
(
rc
!=
0
)
{
FSMGR_LOGE
(
"Mount %s to %s failed %d"
,
item
->
deviceName
,
item
->
mountPoint
,
errno
);
...
...
@@ -306,4 +420,4 @@ int UmountAllWithFstabFile(const char *fstabFile)
#if __cplusplus
}
#endif
#endif
#endif
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录