From: Peng Fan 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 --- 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