[PATCH 5/7] erofs-utils: lib: migrate `c_mt_async_queue_limit`
Gao Xiang
hsiangkao at linux.alibaba.com
Tue Aug 19 00:47:39 AEST 2025
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
include/erofs/config.h | 1 -
include/erofs/importer.h | 1 +
lib/inode.c | 9 +++++++--
mkfs/main.c | 7 ++++---
4 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/include/erofs/config.h b/include/erofs/config.h
index 418e9b6..40a2011 100644
--- a/include/erofs/config.h
+++ b/include/erofs/config.h
@@ -94,7 +94,6 @@ struct erofs_configure {
#ifdef EROFS_MT_ENABLED
u64 c_mkfs_segment_size;
u32 c_mt_workers;
- u32 c_mt_async_queue_limit;
#endif
#ifdef WITH_ANDROID
char *target_out_path;
diff --git a/include/erofs/importer.h b/include/erofs/importer.h
index 9aa032b..0382913 100644
--- a/include/erofs/importer.h
+++ b/include/erofs/importer.h
@@ -14,6 +14,7 @@ extern "C"
struct erofs_importer_params {
char *source;
+ u32 mt_async_queue_limit;
bool no_datainline;
};
diff --git a/lib/inode.c b/lib/inode.c
index ae1c39c..9a5b67c 100644
--- a/lib/inode.c
+++ b/lib/inode.c
@@ -2023,6 +2023,7 @@ static int erofs_get_fdlimit(void)
static int erofs_mkfs_build_tree(struct erofs_mkfs_buildtree_ctx *ctx)
{
struct erofs_importer *im = ctx->im;
+ struct erofs_importer_params *params = im->params;
struct erofs_sb_info *sbi = im->sbi;
struct erofs_mkfs_dfops *q;
int err, err2;
@@ -2032,8 +2033,12 @@ static int erofs_mkfs_build_tree(struct erofs_mkfs_buildtree_ctx *ctx)
if (!q)
return -ENOMEM;
- if (cfg.c_mt_async_queue_limit) {
- q->entries = cfg.c_mt_async_queue_limit;
+ if (params->mt_async_queue_limit) {
+ q->entries = params->mt_async_queue_limit;
+ if (q->entries & (q->entries - 1)) {
+ free(q);
+ return -EINVAL;
+ }
} else {
err = roundup_pow_of_two(erofs_get_fdlimit()) >> 1;
q->entries = err && err < 32768 ? err : 32768;
diff --git a/mkfs/main.c b/mkfs/main.c
index 2040b62..bf2aa47 100644
--- a/mkfs/main.c
+++ b/mkfs/main.c
@@ -860,7 +860,8 @@ static int mkfs_parse_sources(int argc, char *argv[], int optind)
return 0;
}
-static int mkfs_parse_options_cfg(int argc, char *argv[])
+static int mkfs_parse_options_cfg(struct erofs_importer_params *params,
+ int argc, char *argv[])
{
char *endptr;
int opt, i, err;
@@ -1195,7 +1196,7 @@ static int mkfs_parse_options_cfg(int argc, char *argv[])
break;
#ifdef EROFS_MT_ENABLED
case 530:
- cfg.c_mt_async_queue_limit = strtoul(optarg, &endptr, 0);
+ params->mt_async_queue_limit = strtoul(optarg, &endptr, 0);
if (*endptr != '\0') {
erofs_err("invalid async-queue-limit %s", optarg);
return -EINVAL;
@@ -1497,7 +1498,7 @@ int main(int argc, char **argv)
erofs_mkfs_default_options();
erofs_importer_preset(&importer_params);
- err = mkfs_parse_options_cfg(argc, argv);
+ err = mkfs_parse_options_cfg(&importer_params, argc, argv);
erofs_show_progs(argc, argv);
if (err) {
if (err == -EINVAL)
--
2.43.5
More information about the Linux-erofs
mailing list