Re: [PATCH v2 1/2] md: add helper rdev_needs_recovery()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

在 2025/08/12 10:17, Zheng Qixing 写道:
From: Zheng Qixing <zhengqixing@xxxxxxxxxx>

Add a helper for checking if an rdev needs recovery.

Signed-off-by: Zheng Qixing <zhengqixing@xxxxxxxxxx>
---
  drivers/md/md.c | 20 ++++++++++++--------
  1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index ac85ec73a409..4ea956a80343 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -4835,6 +4835,16 @@ metadata_store(struct mddev *mddev, const char *buf, size_t len)
  static struct md_sysfs_entry md_metadata =
  __ATTR_PREALLOC(metadata_version, S_IRUGO|S_IWUSR, metadata_show, metadata_store);
+static bool rdev_needs_recovery(struct md_rdev *rdev, sector_t sectors)
+{
+	if (!test_bit(Journal, &rdev->flags) &&
+	    !test_bit(Faulty, &rdev->flags) &&
+	    !test_bit(In_sync, &rdev->flags) &&
+	    rdev->recovery_offset < sectors)
+		return true;
+	return false;
return directly:

return !test_bit(Journal, &rdev->flags) &&
	!test_bit(Faulty, &rdev->flags) &&
	!test_bit(In_sync, &rdev->flags) &&
	rdev->recovery_offset < sectors);

Otherwise, feel free to add
Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx>

Kuai

+}
+
  enum sync_action md_sync_action(struct mddev *mddev)
  {
  	unsigned long recovery = mddev->recovery;
@@ -8969,10 +8979,7 @@ static sector_t md_sync_position(struct mddev *mddev, enum sync_action action)
  		rcu_read_lock();
  		rdev_for_each_rcu(rdev, mddev)
  			if (rdev->raid_disk >= 0 &&
-			    !test_bit(Journal, &rdev->flags) &&
-			    !test_bit(Faulty, &rdev->flags) &&
-			    !test_bit(In_sync, &rdev->flags) &&
-			    rdev->recovery_offset < start)
+			    rdev_needs_recovery(rdev, start))
  				start = rdev->recovery_offset;
  		rcu_read_unlock();
@@ -9333,10 +9340,7 @@ void md_do_sync(struct md_thread *thread)
  				rdev_for_each_rcu(rdev, mddev)
  					if (rdev->raid_disk >= 0 &&
  					    mddev->delta_disks >= 0 &&
-					    !test_bit(Journal, &rdev->flags) &&
-					    !test_bit(Faulty, &rdev->flags) &&
-					    !test_bit(In_sync, &rdev->flags) &&
-					    rdev->recovery_offset < mddev->curr_resync)
+					    rdev_needs_recovery(rdev, mddev->curr_resync))
  						rdev->recovery_offset = mddev->curr_resync;
  				rcu_read_unlock();
  			}






[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux