aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoboru Asai <asai@sijam.com>2024-05-01 11:24:20 +0900
committerGao Xiang <hsiangkao@linux.alibaba.com>2024-05-01 14:45:37 +0800
commit1fb70b1dbdbb4c21224a3df46bae0262bdbe918b (patch)
tree0d14b4d399c62c2d1587d0b20d4dbd5bcd17188b
parent2bd9d039bed6d30946074302e0c315ef2e5ed536 (diff)
downloaderofs-utils-upstream-dev.tar.gz
erofs-utils: optimize pthread_cond_signal callingupstream-dev
Call pthread_cond_signal once per file. Signed-off-by: Noboru Asai <asai@sijam.com> Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com> Link: https://lore.kernel.org/r/20240501022420.1881305-1-asai@sijam.com [ Gao Xiang: add potential overflow detection. ] Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
-rw-r--r--lib/compress.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/compress.c b/lib/compress.c
index 9772543..e3e4c21 100644
--- a/lib/compress.c
+++ b/lib/compress.c
@@ -1260,8 +1260,10 @@ void z_erofs_mt_workfn(struct erofs_work *work, void *tlsp)
out:
cwork->errcode = ret;
pthread_mutex_lock(&ictx->mutex);
- ++ictx->nfini;
- pthread_cond_signal(&ictx->cond);
+ if (++ictx->nfini >= ictx->seg_num) {
+ DBG_BUGON(ictx->nfini > ictx->seg_num);
+ pthread_cond_signal(&ictx->cond);
+ }
pthread_mutex_unlock(&ictx->mutex);
}