* [PATCH] block: use assign_bit() where applicable
@ 2026-09-18 14:16 Peng Fan (OSS)
2026-09-21 11:46 ` Christoph Böhmwalder
0 siblings, 1 reply; 2+ messages in thread
From: Peng Fan (OSS) @ 2026-09-18 14:16 UTC (permalink / raw)
To: Philipp Reisner, Lars Ellenberg, Christoph Böhmwalder,
Jens Axboe, Denis Efremov, Yuho Choi, Peng Fan, Hongyan Xu,
Mateusz Nowicki
Cc: linux-kernel, drbd-dev, linux-block
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
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] block: use assign_bit() where applicable
2026-09-18 14:16 [PATCH] block: use assign_bit() where applicable Peng Fan (OSS)
@ 2026-09-21 11:46 ` Christoph Böhmwalder
0 siblings, 0 replies; 2+ messages in thread
From: Christoph Böhmwalder @ 2026-09-21 11:46 UTC (permalink / raw)
To: Peng Fan (OSS),
Philipp Reisner, Lars Ellenberg, Jens Axboe, Denis Efremov,
Yuho Choi, Peng Fan, Hongyan Xu, Mateusz Nowicki
Cc: linux-kernel, drbd-dev, linux-block
On 9/18/26 16:16, Peng Fan (OSS) wrote:
> 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(-)
For DRBD:
Reviewed-by: Christoph Böhmwalder <christoph.boehmwalder@linbit.com>
Regards,
Christoph
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-09-21 11:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 14:16 [PATCH] block: use assign_bit() where applicable Peng Fan (OSS)
2026-09-21 11:46 ` Christoph Böhmwalder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®