Skip to contentSkip to conversation

md/raid1:Remove unnecessary rcu_dereference(conf->mirrors[i].rdev). Because rde->nr_pending > 0,so can not remove this disk.

PATCH majianpeng 2 participants 2 messages Mar 28, 2012 – Apr 2, 2012 MD RAID

lore
Share & tools
lore

majianpeng

author
#0 lore raw

From 2d433ec2d351119afac6b57caa6cdec2197c0396 Mon Sep 17 00:00:00 2001
From: majianpeng <[email protected]>
Date: Wed, 28 Mar 2012 19:30:36 +0800
Subject: [PATCH] md/raid1:Remove unnecessary rcu_dereference(conf->mirrors[i].rdev). Because
rde->nr_pending > 0,so can not remove this disk.

---
 drivers/md/raid1.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
drivers/md/raid1.c +1 -2
index 4a40a20..f112782 100644
@@ -2386,8 +2386,7 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
 		int ok = 1;
 		for (i = 0 ; i < conf->raid_disks * 2 ; i++)
 			if (r1_bio->bios[i]->bi_end_io == end_sync_write) {
-				struct md_rdev *rdev =
-					rcu_dereference(conf->mirrors[i].rdev);
+				struct md_rdev *rdev = conf->mirrors[i].rdev;
 				ok = rdev_set_badblocks(rdev, sector_nr,
 							min_bad, 0
 					) && ok;
Signature · 6 lines
1.7.5.4

 				
--------------
majianpeng
2012-03-28
#1 lore raw
Quoted 4 lines · On Wed, 28 Mar 2012 19:46:56 +0800 "majianpeng" <[email protected]> wrote:
Quoted 1 line

From 2d433ec2d351119afac6b57caa6cdec2197c0396 Mon Sep 17 00:00:00 2001

From: majianpeng <[email protected]>
Date: Wed, 28 Mar 2012 19:30:36 +0800
Subject: [PATCH] md/raid1:Remove unnecessary rcu_dereference(conf->mirrors[i].rdev). Because

Also, could you try to find a way to send the patches so that all the headers aren't duplicated. It means I have to go in and edit the patch description of each patch to remove the duplication.

Quoted 13 lines

rde->nr_pending > 0,so can not remove this disk.

---
 drivers/md/raid1.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)
drivers/md/raid1.c +0 -0
index 4a40a20..f112782 100644

drivers/md/raid1.c static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp · line 2392

Quoted 9 lines
drivers/md/raid1.c +1 -2
@@ -2386,8 +2386,7 @@ static sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int *skipp
 		int ok = 1;
 		for (i = 0 ; i < conf->raid_disks * 2 ; i++)
 			if (r1_bio->bios[i]->bi_end_io == end_sync_write) {
-				struct md_rdev *rdev =
-					rcu_dereference(conf->mirrors[i].rdev);
+				struct md_rdev *rdev = conf->mirrors[i].rdev;
 				ok = rdev_set_badblocks(rdev, sector_nr,
 							min_bad, 0
 					) && ok;

Correct, this rcu_dereference() isn't needed and is wrong. I've applied your patch,
Thanks,
NeilBrown