Commit 55dcfdf8 authored by Heinz Mauelshagen's avatar Heinz Mauelshagen Committed by Mikulas Patocka
Browse files

dm raid: use proper md_ro_state enumerators



The dm-raid code was using hardcoded integer values to represent the
read-only/read-write state of RAID arrays instead of the proper
enumeration constants defined in the md_ro_state enumerator type.

Changes:

- Replace hardcoded integers with the appropriate md_ro_state enumerator
  values

- Add the missing MD_RDONLY setting in the post_suspend function
  (no failures have been attributed to this inconsistency, the fix
  ensures correct state transitions for completeness)

This improves code clarity and maintainability by using the defined
enumeration constants rather than magic numbers, ensuring the code
properly conforms to the established API interface.

Signed-off-by: default avatarHeinz Mauelshagen <heinzm@redhat.com>
Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
parent 1cd83fb7
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -3247,7 +3247,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)
	rs_reset_inconclusive_reshape(rs);

	/* Start raid set read-only and assumed clean to change in raid_resume() */
	rs->md.ro = 1;
	rs->md.ro = MD_RDONLY;
	rs->md.in_sync = 1;

	/* Has to be held on running the array */
@@ -3385,7 +3385,7 @@ static enum sync_state decipher_sync_action(struct mddev *mddev, unsigned long r
	/* The MD sync thread can be done with io or be interrupted but still be running */
	if (!test_bit(MD_RECOVERY_DONE, &recovery) &&
	    (test_bit(MD_RECOVERY_RUNNING, &recovery) ||
	     (!mddev->ro && test_bit(MD_RECOVERY_NEEDED, &recovery)))) {
	     (md_is_rdwr(mddev) && test_bit(MD_RECOVERY_NEEDED, &recovery)))) {
		if (test_bit(MD_RECOVERY_RESHAPE, &recovery))
			return st_reshape;

@@ -3775,11 +3775,11 @@ static int raid_message(struct dm_target *ti, unsigned int argc, char **argv,
		} else
			return -EINVAL;
	}
	if (mddev->ro == 2) {
	if (mddev->ro == MD_AUTO_READ) {
		/* A write to sync_action is enough to justify
		 * canceling read-auto mode
		 */
		mddev->ro = 0;
		mddev->ro = MD_RDWR;
		if (!mddev->suspended)
			md_wakeup_thread(mddev->sync_thread);
	}
@@ -3858,6 +3858,7 @@ static void raid_postsuspend(struct dm_target *ti)
		 */
		md_stop_writes(&rs->md);
		mddev_suspend(&rs->md, false);
		rs->md.ro = MD_RDONLY;
	}
}

@@ -3968,7 +3969,7 @@ static void rs_update_sbs(struct raid_set *rs)
	int ro = mddev->ro;

	set_bit(MD_SB_CHANGE_DEVS, &mddev->sb_flags);
	mddev->ro = 0;
	mddev->ro = MD_RDWR;
	md_update_sb(mddev, 1);
	mddev->ro = ro;
}
@@ -4125,7 +4126,7 @@ static void raid_resume(struct dm_target *ti)
		WARN_ON_ONCE(rcu_dereference_protected(mddev->sync_thread,
						       lockdep_is_held(&mddev->reconfig_mutex)));
		clear_bit(RT_FLAG_RS_FROZEN, &rs->runtime_flags);
		mddev->ro = 0;
		mddev->ro = MD_RDWR;
		mddev->in_sync = 0;
		md_unfrozen_sync_thread(mddev);
		mddev_unlock_and_resume(mddev);