From nobody Mon Feb 9 00:39:00 2026 Received: from out203-205-221-153.mail.qq.com (out203-205-221-153.mail.qq.com [203.205.221.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EA0D4301000 for ; Thu, 18 Dec 2025 04:20:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=203.205.221.153 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766031610; cv=none; b=cVASLCUcyYS0A9FYZS2tLMFW72PhfbYRyvpWxC4uXOHwpsEAe1/XlPlSiUQFx1/QST9LvG7abBac+lKlnk2tOIg5giun5HXtpsxuImM0OBgF5lvMrrJOyVP4B2vkNVCl2SWAesFlgVqeYmqT/6XXAwlwPZGviXbwvr8AVy9ItKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1766031610; c=relaxed/simple; bh=4gxqSgOO7tYx3fI6r/pUaFbQ35C4OC26/ALL9ct+GXk=; h=Message-ID:From:To:Cc:Subject:Date:MIME-Version; b=gjm/an4hQD2sKS1/9v9HwyXcmYZME/ic5j28g5PAhu23eielQPEJblLs4uUUZqaMisEFDrJFGXShhRmUiTZyQFV1B+meoAOo3VZbPzZIk8o1Xk+bu3fBllUwyMTrRAp+UCoaYDPBJcXDdIxZUN/BEVX/EdpFVG0oBwE0pDqUVQg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com; spf=pass smtp.mailfrom=foxmail.com; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b=ETW+pZd3; arc=none smtp.client-ip=203.205.221.153 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=foxmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=foxmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=foxmail.com header.i=@foxmail.com header.b="ETW+pZd3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1766031596; bh=ctqyRaS3xeorgfkacB3KEDK+UK2W6A4k46kc16FgGVo=; h=From:To:Cc:Subject:Date; b=ETW+pZd3qFIxcnWb8J2UK3z8pXAM/b6uLKpiqtinZL6TaI4hmPpY7dq8H2RCT/kpX dV0/dX0QiNGTh6lazuqyZRMbM9AU7SBO+YqWY62gqXqw/dOhRA+FEgGV5uzC/zuetc vpg0+OSllJ/lme+nE1yJN+Ec42pHiw41y+0QSVU0= Received: from meizu-Precision-3660.meizu.com ([14.21.33.152]) by newxmesmtplogicsvrszb43-0.qq.com (NewEsmtp) with SMTP id 4F60224B; Thu, 18 Dec 2025 12:19:54 +0800 X-QQ-mid: xmsmtpt1766031594trni6hj9m Message-ID: X-QQ-XMAILINFO: OLkBtgoOWQUP66s18j6scmuJLMgbCkg5BCjVIaRqPQoBhM37MaaNnasTzrLJca wgNeD9OdfnWBpL0mnFDRQO2cYy22GTt/X314Ip9Q0Tg1u4NT15XzrhYj1MYpMuthlFZiFktkV3hM pUOb6CE3s+vHttS2y2OjPHlFZW2fkOcY2//xVgQX78lfY529Y3Qsp5KOToN39q/a5rnDQ6dPGvsD BduGSkkt3sksJTgckxzzo3vfBBgRDQoQcTjGfKyV6DQzQxdgui2Dvx53daha0I1S5R83HGjrWEwV Tiis9PB55hTE+9V2jSqtrFvhLqSkBh1j/RRfBIywjmr/Qc453j5A5kgk2MQrvE+BTPnyyjO6HXZx EIWJitfyjZWUxKws0VINcddfWslEnWPhahIStbZUn68mtMOVnKkArTdx/xGElzFOfAtGcY5X5jqa Ccjwzcmun9ttepvuq41g2fKcBS65X2ggz5tI68g415XDGtBdrLl/tcGdaW29iYzlekWKIwv2IHSr tg+Igm92/YDqnDz1tJlj64KqaJ00i3WEWdZAKiGhGGi7Lp7Wu4oqsE31nyhe1c9jijWR5nrL4O3P gUcFcdf1a9YIW6uZWQansswDrutL97lG4nbB3B8jsAkMoYXhf79oblirDSg8mbYWeFHnz3U27V5A oE6MH95S1QppgN0fmLPCrBl4jkoCxbjy5iINxRUkVIVwHoOg1jfClWmRbJMbHDZeOBhqRSNFf+cU 3PMVzHyopUsHvXwBM97GeIRVKCfWCWRhE6SoxTjDxgpQlBQM2yUwfK9oEBOYt8msRzT5yG2ZYcXA U6dQrkIXmJCfAc2KGhc+AC+d1S2MpNn5bqlkktXS2jKGS6JNKm/6Xe/dWPUNzI5AUc6/PZ3VwwSN /X/UmoqQRWAwEaTQXK+Lez10OuCfwBbJpMqMXIWDdafctgv36o5LJ5eZeASmapu67R3z+R+0OE36 u0Gis+gnGT6TkyqhdaWGoLejbEUuVSSgNX7NgUQ9BuYGT2TrafWtNoWCy+qIRtt0meNiKgISVA5L OWEWbVlM7ApqyN4KF14qgpv7Hel4Yv3pVYFpXPCATsEDLHrGqGzXP3fKIRXyCpibpMG9cC7w== X-QQ-XMRINFO: Nq+8W0+stu50PRdwbJxPCL0= From: Yuwen Chen To: xiang@kernel.org Cc: chao@kernel.org, huyue2@coolpad.com, jefflexu@linux.alibaba.com, linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org, Yuwen Chen Subject: [PATCH v3] erofs: simplify the code using for_each_set_bit Date: Thu, 18 Dec 2025 12:19:52 +0800 X-OQ-MSGID: <20251218041952.2905984-1-ywen.chen@foxmail.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When mounting the EROFS file system, it is necessary to check the available compression algorithms. At this time, the for_each_set_bit function can be used to simplify the code logic. Signed-off-by: Yuwen Chen Reviewed-by: Chao Yu Reviewed-by: Gao Xiang --- v2 -> v3: - rebase the patch - remove the unnecessary judgment logic v1 -> v2: - revert the modifications to the fs/erofs/internal.h fs/erofs/decompressor.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c index d5d0902763917..15b464a589939 100644 --- a/fs/erofs/decompressor.c +++ b/fs/erofs/decompressor.c @@ -452,7 +452,7 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct e= rofs_super_block *dsb) { struct erofs_sb_info *sbi =3D EROFS_SB(sb); struct erofs_buf buf =3D __EROFS_BUF_INITIALIZER; - unsigned int algs, alg; + unsigned long algs, alg; erofs_off_t offset; int size, ret =3D 0; =20 @@ -461,33 +461,30 @@ int z_erofs_parse_cfgs(struct super_block *sb, struct= erofs_super_block *dsb) return z_erofs_load_lz4_config(sb, dsb, NULL, 0); } =20 - sbi->available_compr_algs =3D le16_to_cpu(dsb->u1.available_compr_algs); - if (sbi->available_compr_algs & ~Z_EROFS_ALL_COMPR_ALGS) { - erofs_err(sb, "unidentified algorithms %x, please upgrade kernel", - sbi->available_compr_algs & ~Z_EROFS_ALL_COMPR_ALGS); + algs =3D le16_to_cpu(dsb->u1.available_compr_algs); + sbi->available_compr_algs =3D algs; + if (algs & ~Z_EROFS_ALL_COMPR_ALGS) { + erofs_err(sb, "unidentified algorithms %lx, please upgrade kernel", + algs & ~Z_EROFS_ALL_COMPR_ALGS); return -EOPNOTSUPP; } =20 (void)erofs_init_metabuf(&buf, sb, false); offset =3D EROFS_SUPER_OFFSET + sbi->sb_size; - alg =3D 0; - for (algs =3D sbi->available_compr_algs; algs; algs >>=3D 1, ++alg) { + for_each_set_bit(alg, &algs, Z_EROFS_COMPRESSION_MAX) { const struct z_erofs_decompressor *dec =3D z_erofs_decomp[alg]; void *data; =20 - if (!(algs & 1)) - continue; - data =3D erofs_read_metadata(sb, &buf, &offset, &size); if (IS_ERR(data)) { ret =3D PTR_ERR(data); break; } =20 - if (alg < Z_EROFS_COMPRESSION_MAX && dec && dec->config) { + if (dec && dec->config) { ret =3D dec->config(sb, dsb, data, size); } else { - erofs_err(sb, "algorithm %d isn't enabled on this kernel", + erofs_err(sb, "algorithm %ld isn't enabled on this kernel", alg); ret =3D -EOPNOTSUPP; } --=20 2.34.1