| From: Joseph Qi <joseph.qi@linux.alibaba.com> |
| Subject: ocfs2/cluster: use bitmap API instead of hand-writing it |
| Date: Fri, 7 Oct 2022 20:48:44 +0800 |
| |
| Use bitmap_zero/bitmap_copy/bitmap_equal directly for bitmap operations. |
| |
| Link: https://lkml.kernel.org/r/20221007124846.186453-1-joseph.qi@linux.alibaba.com |
| Signed-off-by: Joseph Qi <joseph.qi@linux.alibaba.com> |
| Cc: Mark Fasheh <mark@fasheh.com> |
| Cc: Joel Becker <jlbec@evilplan.org> |
| Cc: Junxiao Bi <junxiao.bi@oracle.com> |
| Cc: Changwei Ge <gechangwei@live.cn> |
| Cc: Gang He <ghe@suse.com> |
| Cc: Jun Piao <piaojun@huawei.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| fs/ocfs2/cluster/heartbeat.c | 20 ++++++++++---------- |
| fs/ocfs2/cluster/nodemanager.c | 2 +- |
| 2 files changed, 11 insertions(+), 11 deletions(-) |
| |
| --- a/fs/ocfs2/cluster/heartbeat.c~ocfs2-cluster-use-bitmap-api-instead-of-hand-writing-it |
| +++ a/fs/ocfs2/cluster/heartbeat.c |
| @@ -335,7 +335,7 @@ static void o2hb_arm_timeout(struct o2hb |
| /* negotiate timeout must be less than write timeout. */ |
| schedule_delayed_work(®->hr_nego_timeout_work, |
| msecs_to_jiffies(O2HB_NEGO_TIMEOUT_MS)); |
| - memset(reg->hr_nego_node_bitmap, 0, sizeof(reg->hr_nego_node_bitmap)); |
| + bitmap_zero(reg->hr_nego_node_bitmap, O2NM_MAX_NODES); |
| } |
| |
| static void o2hb_disarm_timeout(struct o2hb_region *reg) |
| @@ -386,8 +386,8 @@ static void o2hb_nego_timeout(struct wor |
| config_item_name(®->hr_item), reg->hr_bdev); |
| set_bit(master_node, reg->hr_nego_node_bitmap); |
| } |
| - if (memcmp(reg->hr_nego_node_bitmap, live_node_bitmap, |
| - sizeof(reg->hr_nego_node_bitmap))) { |
| + if (!bitmap_equal(reg->hr_nego_node_bitmap, live_node_bitmap, |
| + O2NM_MAX_NODES)) { |
| /* check negotiate bitmap every second to do timeout |
| * approve decision. |
| */ |
| @@ -856,8 +856,8 @@ static void o2hb_set_quorum_device(struc |
| * live nodes heartbeat on it. In other words, the region has been |
| * added to all nodes. |
| */ |
| - if (memcmp(reg->hr_live_node_bitmap, o2hb_live_node_bitmap, |
| - sizeof(o2hb_live_node_bitmap))) |
| + if (!bitmap_equal(reg->hr_live_node_bitmap, o2hb_live_node_bitmap, |
| + O2NM_MAX_NODES)) |
| goto unlock; |
| |
| printk(KERN_NOTICE "o2hb: Region %s (%pg) is now a quorum device\n", |
| @@ -1437,11 +1437,11 @@ void o2hb_init(void) |
| for (i = 0; i < ARRAY_SIZE(o2hb_live_slots); i++) |
| INIT_LIST_HEAD(&o2hb_live_slots[i]); |
| |
| - memset(o2hb_live_node_bitmap, 0, sizeof(o2hb_live_node_bitmap)); |
| - memset(o2hb_region_bitmap, 0, sizeof(o2hb_region_bitmap)); |
| - memset(o2hb_live_region_bitmap, 0, sizeof(o2hb_live_region_bitmap)); |
| - memset(o2hb_quorum_region_bitmap, 0, sizeof(o2hb_quorum_region_bitmap)); |
| - memset(o2hb_failed_region_bitmap, 0, sizeof(o2hb_failed_region_bitmap)); |
| + bitmap_zero(o2hb_live_node_bitmap, O2NM_MAX_NODES); |
| + bitmap_zero(o2hb_region_bitmap, O2NM_MAX_REGIONS); |
| + bitmap_zero(o2hb_live_region_bitmap, O2NM_MAX_REGIONS); |
| + bitmap_zero(o2hb_quorum_region_bitmap, O2NM_MAX_REGIONS); |
| + bitmap_zero(o2hb_failed_region_bitmap, O2NM_MAX_REGIONS); |
| |
| o2hb_dependent_users = 0; |
| |
| --- a/fs/ocfs2/cluster/nodemanager.c~ocfs2-cluster-use-bitmap-api-instead-of-hand-writing-it |
| +++ a/fs/ocfs2/cluster/nodemanager.c |
| @@ -54,7 +54,7 @@ int o2nm_configured_node_map(unsigned lo |
| return -EINVAL; |
| |
| read_lock(&cluster->cl_nodes_lock); |
| - memcpy(map, cluster->cl_nodes_bitmap, sizeof(cluster->cl_nodes_bitmap)); |
| + bitmap_copy(map, cluster->cl_nodes_bitmap, O2NM_MAX_NODES); |
| read_unlock(&cluster->cl_nodes_lock); |
| |
| return 0; |
| _ |