From nobody Mon Sep 28 22:29:16 2026 Received: from mail.envs.net (mail.envs.net [157.180.15.194]) (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 BC63E38B7DB for ; Sun, 16 Aug 2026 01:59:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=157.180.15.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786845604; cv=none; b=QfLRMuGg9/GlvhB33z/yaQnejl4Np7YijV4yKjmB2m/fUvyESmheHy5yIB8oUeP7Azr2VVaEHB0CCpaRMLciLPyzSpMAz1S3pD65944hh96pvgmdB5rrzgDw5/c+bXR18J7pgu4b3N4rnzfjDOMVCHhd0bltS2875tpMwUDFlSg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786845604; c=relaxed/simple; bh=2b98b5hXs2YLelkgsLAB9yzNPWOO0sja9vUSHCgWNDM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=HK8fhEII901mYcqKLtLvKypHaWnj+f7a7HvERI4lyk9XK2IXS8Svh7D66ASAxCDJQkBOi9St38wDZhC2OdKZkUqvzBR4aw1nRJSo4dk0UKc/klfL7WimJNC3kdPLpadqcr6xBKB+xJcQ4iegxCN2Dkv3ZXzPuHnPfb8mugVyu/M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=envs.net; spf=pass smtp.mailfrom=envs.net; dkim=pass (4096-bit key) header.d=envs.net header.i=@envs.net header.b=qA6lTlFz; arc=none smtp.client-ip=157.180.15.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=envs.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=envs.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (4096-bit key) header.d=envs.net header.i=@envs.net header.b="qA6lTlFz" Received: from localhost (mail.envs.net [127.0.0.1]) by mail.envs.net (Postfix) with ESMTP id 597A31C00D6; Sun, 16 Aug 2026 01:59:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=envs.net; s=modoboa; t=1786845597; bh=gWQXs5fmIWtU2tjXrYXfAcuUwCKxCwdQuj+zUyUIJKM=; h=From:Date:Subject:To:Cc:From; b=qA6lTlFzJQTefYwWi+xGilguVwKIwGhjT8Vq+A5yzLt9V1BxOLA6VhH158v88pRDg GqR0jlbT21bavcUpbmQIwScgzDA6NsymON4iSE4H2oqLeFIGCSYognhMm2VvBzJ0wA w2l4nPfjIbk8dD1xVf3pg2zOdIRbmyxeCuSyJJLnetCxl2hKEnU2lR+EczIZHNTW4I i/hMtLufhWwDoSsjs86Br4thf8yWkJmqueNK5SGYU9988S8wilbHSCRXh+L+bLch/U RUYXynPH2nO48U063GhwJ665fyImKTxxfXkjRNgAF8/T/RYkAQUbSgAdt28oGmMelW aVVhsruGVr9GClpDkKNCVB8btzzAv7l9oVbBgKGF6gkl6QnxuysMi2S4EB7tUl7/V7 CUqYWawYw/QqWuih67IfCpNDUlXlngFfFbAy81ICtC63EQiQ35ZL9AVzRmxcst0f3R hpHpd8KenogcD4ETYv4PN6aerCxOeEt9XvP7MJ8i2xQB6rCJrClVn5pw8u4MWO5YFO N/ThdQSpjTao2gUu4Zeenb8VJdTAohi1hQM9uBzW+wMGl7HlCTKTwjwjH96qlXcUqA 7S66hUOiyRO+9XcwiiFykSZwZt5/QVJiuC/882dmU1yQSbhzVMecvnHKq7kBzEBT3H WE8ilJItm3UR3Avs/K3niCXw= X-Virus-Scanned: Debian amavisd-new at mail.envs.net Received: from mail.envs.net ([127.0.0.1]) by localhost (mail.envs.net [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id CEQZmUPLVZe6; Sun, 16 Aug 2026 01:59:52 +0000 (UTC) Received: from [192.168.0.106] (unknown [120.230.214.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.envs.net (Postfix) with ESMTPSA; Sun, 16 Aug 2026 01:59:51 +0000 (UTC) From: Bingwu Zhang Date: Sun, 16 Aug 2026 10:00:12 +0800 Subject: [PATCH] erofs: remove erofs_dev_context->rwsem Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260816-erofs-remove-rwsem-v1-1-78b60b855fa6@astrafall.org> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMQQ6CMBBG4auQWTtJacRUr0JcVPoDYwI1M4omh Ltbcfkt3lvJoAKjS7WSYhGTPBfUh4q6Mc4DWFIxeedPLtRHhubeWDHlBaxvw8RNdOfgU5NicFT Ch6KXzz5tr3/b63ZH9/ydaNu+vl6SNXYAAAA= X-Change-ID: 20260814-erofs-remove-rwsem-5a0982d5da80 To: Gao Xiang , Chao Yu , Yue Hu , Jeffle Xu , Sandeep Dhavale , Hongbo Li , Chunhai Guo Cc: linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org, Bingwu Zhang X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openssh-sha256; t=1786845640; l=3227; i=xtex@astrafall.org; h=from:subject:message-id; bh=AvjOtrYNb3uWIOXdgsBc2lWvyD8IHYCLActrdVEWmCk=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgL1erbbl1jNM9AtzeLFJ5FKVqr/ylJ MBUj5+W9IwwCl4AAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QM7Wa15Sy4qoRwY4MyxCtHbq00O0SmQQR1V1bpMPifrZQD7rygSlR5LflG4w2C0MQn8EfiHC+lX ezgo7lCmGlAM= X-Developer-Key: i=xtex@astrafall.org; a=openssh; fpr=SHA256:IEYEjkZlkUTr5U9GiDAmZU/4eZus2t2RsxusyhQqwao From: Bingwu Zhang devs->tree is only modified in initialization and destruction code paths and will never be concurrent with data reading. Thus there is no need to guard idr_alloc/idr_find with a rwsem. Signed-off-by: Bingwu Zhang --- fs/erofs/data.c | 9 +-------- fs/erofs/internal.h | 1 - fs/erofs/super.c | 5 ----- 3 files changed, 1 insertion(+), 14 deletions(-) diff --git a/fs/erofs/data.c b/fs/erofs/data.c index 9aa48c8d67d1..49d62eac6eb4 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -216,21 +216,15 @@ int erofs_map_dev(struct super_block *sb, struct erof= s_map_dev *map) erofs_fill_from_devinfo(map, sb, &EROFS_SB(sb)->dif0); map->m_bdev =3D sb->s_bdev; /* use s_bdev for the primary device */ if (map->m_deviceid) { - down_read(&devs->rwsem); dif =3D idr_find(&devs->tree, map->m_deviceid - 1); - if (!dif) { - up_read(&devs->rwsem); + if (!dif) return -ENODEV; - } if (devs->flatdev) { map->m_pa +=3D erofs_pos(sb, dif->uniaddr); - up_read(&devs->rwsem); return 0; } erofs_fill_from_devinfo(map, sb, dif); - up_read(&devs->rwsem); } else if (devs->extra_devices && !devs->flatdev) { - down_read(&devs->rwsem); idr_for_each_entry(&devs->tree, dif, id) { if (!dif->uniaddr) continue; @@ -243,7 +237,6 @@ int erofs_map_dev(struct super_block *sb, struct erofs_= map_dev *map) break; } } - up_read(&devs->rwsem); } return 0; } diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h index 57bd21859c65..811c160035ce 100644 --- a/fs/erofs/internal.h +++ b/fs/erofs/internal.h @@ -65,7 +65,6 @@ struct erofs_mount_opts { =20 struct erofs_dev_context { struct idr tree; - struct rw_semaphore rwsem; =20 unsigned int extra_devices; bool flatdev; diff --git a/fs/erofs/super.c b/fs/erofs/super.c index 9d8f862f309f..12ecdd4b85ac 100644 --- a/fs/erofs/super.c +++ b/fs/erofs/super.c @@ -215,7 +215,6 @@ static int erofs_scan_devices(struct super_block *sb, =20 sbi->device_id_mask =3D roundup_pow_of_two(ondisk_extradevs + 1) - 1; pos =3D le16_to_cpu(dsb->devt_slotoff) * EROFS_DEVT_SLOT_SIZE; - down_read(&sbi->devs->rwsem); if (sbi->devs->extra_devices) { idr_for_each_entry(&sbi->devs->tree, dif, id) { err =3D erofs_init_device(&buf, sb, dif, &pos); @@ -242,7 +241,6 @@ static int erofs_scan_devices(struct super_block *sb, break; } } - up_read(&sbi->devs->rwsem); erofs_put_metabuf(&buf); return err; } @@ -489,9 +487,7 @@ static int erofs_fc_parse_param(struct fs_context *fc, kfree(dif); return -ENOMEM; } - down_write(&sbi->devs->rwsem); ret =3D idr_alloc(&sbi->devs->tree, dif, 0, 0, GFP_KERNEL); - up_write(&sbi->devs->rwsem); if (ret < 0) { kfree(dif->path); kfree(dif); @@ -850,7 +846,6 @@ static int erofs_init_fs_context(struct fs_context *fc) fc->s_fs_info =3D sbi; =20 idr_init(&sbi->devs->tree); - init_rwsem(&sbi->devs->rwsem); erofs_default_options(sbi); fc->ops =3D &erofs_context_ops; return 0; --- base-commit: 3eb40771c00a8488fa6ed2cc1fe203477908bf38 change-id: 20260814-erofs-remove-rwsem-5a0982d5da80 Best regards, -- =20 Bingwu Zhang