Linux block layer
 help / color / mirror / Atom feed
From: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
To: "Philipp Reisner" <philipp.reisner@linbit.com>,
	"Lars Ellenberg" <lars.ellenberg@linbit.com>,
	"Christoph Böhmwalder" <christoph.boehmwalder@linbit.com>,
	"Jens Axboe" <axboe@kernel.dk>,
	"Denis Efremov" <efremov@linux.com>,
	"Yuho Choi" <dbgh9129@gmail.com>, "Peng Fan" <peng.fan@nxp.com>,
	"Hongyan Xu" <getshell@seu.edu.cn>,
	"Mateusz Nowicki" <mateusz.nowicki@posteo.net>
Cc: linux-kernel@vger.kernel.org, drbd-dev@lists.linux.dev,
	linux-block@vger.kernel.org
Subject: [PATCH] block: use assign_bit() where applicable
Date: Fri, 18 Sep 2026 22:16:04 +0800	[thread overview]
Message-ID: <20260918141609.3022848-1-peng.fan@oss.nxp.com> (raw)

From: Peng Fan <peng.fan@nxp.com>

Convert open-coded if/else with set_bit/clear_bit and their
non-atomic __set_bit/__clear_bit variants to the assign_bit/__assign_bit
API.

Done with Coccinelle semantic patch:
    // set_bit -> clear_bit => assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        set_bit(bit, addr);
    -else
    -        clear_bit(bit, addr);
    +assign_bit(bit, addr, cond);

    // clear_bit -> set_bit => assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        clear_bit(bit, addr);
    -else
    -        set_bit(bit, addr);
    +assign_bit(bit, addr, !cond);

    // __set_bit -> __clear_bit => __assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        __set_bit(bit, addr);
    -else
    -        __clear_bit(bit, addr);
    +__assign_bit(bit, addr, cond);

    // __clear_bit -> __set_bit => __assign_bit

    @@
    expression cond, bit, addr;
    @@

    -if (cond)
    -        __clear_bit(bit, addr);
    -else
    -        __set_bit(bit, addr);
    +__assign_bit(bit, addr, !cond);

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 drivers/block/drbd/drbd_nl.c       | 16 ++++------------
 drivers/block/drbd/drbd_receiver.c |  5 +----
 drivers/block/floppy.c             |  8 ++------
 drivers/block/mtip32xx/mtip32xx.c  |  6 ++----
 4 files changed, 9 insertions(+), 26 deletions(-)

diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index b77f901fc3ef..b24fb2cc2f70 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -1665,10 +1665,7 @@ int drbd_nl_chg_disk_opts_doit(struct sk_buff *skb, struct genl_info *info)
 	else
 		device->ldev->md.flags |= MDF_AL_DISABLED;
 
-	if (new_disk_conf->md_flushes)
-		clear_bit(MD_NO_FUA, &device->flags);
-	else
-		set_bit(MD_NO_FUA, &device->flags);
+	assign_bit(MD_NO_FUA, &device->flags, !new_disk_conf->md_flushes);
 
 	if (write_ordering_changed(old_disk_conf, new_disk_conf))
 		drbd_bump_write_ordering(device->resource, NULL, WO_BDEV_FLUSH);
@@ -2031,10 +2028,7 @@ int drbd_nl_attach_doit(struct sk_buff *skb, struct genl_info *info)
 
 	/* Reset the "barriers don't work" bits here, then force meta data to
 	 * be written, to ensure we determine if barriers are supported. */
-	if (new_disk_conf->md_flushes)
-		clear_bit(MD_NO_FUA, &device->flags);
-	else
-		set_bit(MD_NO_FUA, &device->flags);
+	assign_bit(MD_NO_FUA, &device->flags, !new_disk_conf->md_flushes);
 
 	/* Point of no return reached.
 	 * Devices and memory are no longer released by error cleanup below.
@@ -2053,10 +2047,8 @@ int drbd_nl_attach_doit(struct sk_buff *skb, struct genl_info *info)
 	drbd_bump_write_ordering(device->resource, device->ldev, WO_BDEV_FLUSH);
 	unlock_all_resources();
 
-	if (drbd_md_test_flag(device->ldev, MDF_CRASHED_PRIMARY))
-		set_bit(CRASHED_PRIMARY, &device->flags);
-	else
-		clear_bit(CRASHED_PRIMARY, &device->flags);
+	assign_bit(CRASHED_PRIMARY, &device->flags,
+		   drbd_md_test_flag(device->ldev, MDF_CRASHED_PRIMARY));
 
 	if (drbd_md_test_flag(device->ldev, MDF_PRIMARY_IND) &&
 	    !(device->state.role == R_PRIMARY && device->resource->susp_nod))
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 2135c14354a8..4dd651568411 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -920,10 +920,7 @@ static int conn_connect(struct drbd_connection *connection)
 		kref_get(&device->kref);
 		rcu_read_unlock();
 
-		if (discard_my_data)
-			set_bit(DISCARD_MY_DATA, &device->flags);
-		else
-			clear_bit(DISCARD_MY_DATA, &device->flags);
+		assign_bit(DISCARD_MY_DATA, &device->flags, discard_my_data);
 
 		drbd_connected(peer_device);
 		kref_put(&device->kref, drbd_destroy_device);
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index f04397b8e381..2ca99a57b401 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -1580,12 +1580,8 @@ static void check_wp(int fdc, int drive)
 			  "checking whether disk is write protected\n");
 		debug_dcl(drive_params[drive].flags, "wp=%x\n",
 			  reply_buffer[ST3] & 0x40);
-		if (!(reply_buffer[ST3] & 0x40))
-			set_bit(FD_DISK_WRITABLE_BIT,
-				&drive_state[drive].flags);
-		else
-			clear_bit(FD_DISK_WRITABLE_BIT,
-				  &drive_state[drive].flags);
+		assign_bit(FD_DISK_WRITABLE_BIT, &drive_state[drive].flags,
+			   !(reply_buffer[ST3] & 0x40));
 	}
 }
 
diff --git a/drivers/block/mtip32xx/mtip32xx.c b/drivers/block/mtip32xx/mtip32xx.c
index 113bdb868c46..ff39ea9928e5 100644
--- a/drivers/block/mtip32xx/mtip32xx.c
+++ b/drivers/block/mtip32xx/mtip32xx.c
@@ -1166,10 +1166,8 @@ static int mtip_get_identify(struct mtip_port *port, void __user *user_buffer)
 #endif
 
 	/* Check security locked state */
-	if (port->identify[128] & 0x4)
-		set_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
-	else
-		clear_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag);
+	assign_bit(MTIP_DDF_SEC_LOCK_BIT, &port->dd->dd_flag,
+		   port->identify[128] & 0x4);
 
 	/* Set the identify buffer as valid. */
 	port->identify_valid = 1;
-- 
2.51.0


             reply	other threads:[~2026-09-18 14:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-18 14:16 Peng Fan (OSS) [this message]
2026-09-21 11:46 ` [PATCH] block: use assign_bit() where applicable Christoph Böhmwalder

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260918141609.3022848-1-peng.fan@oss.nxp.com \
    --to=peng.fan@oss.nxp.com \
    --cc=axboe@kernel.dk \
    --cc=christoph.boehmwalder@linbit.com \
    --cc=dbgh9129@gmail.com \
    --cc=drbd-dev@lists.linux.dev \
    --cc=efremov@linux.com \
    --cc=getshell@seu.edu.cn \
    --cc=lars.ellenberg@linbit.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mateusz.nowicki@posteo.net \
    --cc=peng.fan@nxp.com \
    --cc=philipp.reisner@linbit.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox