raid: replace list_for_each_continue_rcu with new interface
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/3 raid: replace list_for_each_continue_rcu with new interface
From: Michael Wang <[email protected]>
This patch replaces list_for_each_continue_rcu() with list_for_each_entry_continue_rcu() to save a few lines of code and allow removing list_for_each_continue_rcu().
--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)
drivers/md/bitmap.c +3 -6
@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */
Signature · 1 line
1.7.4.1
Quoted 7 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().Signed-off-by Michael Wang <[email protected]>
Getting rid of list_for_each_continue_rcu() would indeed be a good thing!
Quoted 36 lines
--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */ Signature · 1 line
1.7.4.1
Quoted 6 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().
Hi, Neil
Could I get some comments on this patch?
Regards,
Michael Wang
Quoted 34 lines
Signed-off-by Michael Wang <[email protected]>--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */
Quoted 11 lines · Michael Wang
Quoted 6 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().Hi, Neil
Could I get some comments on this patch?
Hi, Neil
Could I get some comments?
And please forgive and warn me if this patch has came to the wrong place...I get the address from get_maintainer.
Regards,
Michael Wang
Quoted 39 lines
Regards,
Michael WangQuoted 34 lines
Signed-off-by Michael Wang <[email protected]>--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */
NeilBrown
Acked-byQuoted 11 lines · On Mon, 10 Sep 2012 16:30:11 +0800 Michael Wang <[email protected]>…
Quoted 10 lines · Michael Wang
Quoted 6 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().Hi, Neil
Quoted 8 lines
Quoted 1 line
Could I get some comments on this patch?
Hi, Neil
Could I get some comments?
And please forgive and warn me if this patch has came to the wrong place...I get the address from
get_maintainer.
Sorry, August was a bad month.
Yes, patch looks good. Shall I include it in my tree, do you want to submit them altogether through some rcu tree?
Either way is fine by me. If you want to submit it through some other tree,
If not, it'll probably appear in my -next soonish.
Thanks,
NeilBrown
Quoted 43 lines
Regards,
Michael WangQuoted 39 lines
Regards,
Michael WangQuoted 34 lines
Signed-off-by Michael Wang <[email protected]>--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */
Quoted 23 lines · NeilBrown
Quoted 11 lines · On Mon, 10 Sep 2012 16:30:11 +0800 Michael Wang <[email protected]>…
Quoted 10 lines · Michael Wang
Quoted 6 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().Hi, Neil
Quoted 8 lines
Quoted 1 line
Could I get some comments on this patch?
Hi, Neil
Could I get some comments?
And please forgive and warn me if this patch has came to the wrong place...I get the address from
get_maintainer.
Quoted 6 lines
Sorry, August was a bad month.
Yes, patch looks good. Shall I include it in my tree, do you want to submit them altogether through some rcu tree?
Either way is fine by me. If you want to submit it through some other tree,Acked-by NeilBrown <[email protected]>
Thanks for your review ;-)
I think submit to rcu tree may be better, what's your opinion, Paul?
Regards,
Michael Wang
Quoted 51 lines
If not, it'll probably appear in my -next soonish.
Thanks,
NeilBrownQuoted 43 lines
Regards,
Michael WangQuoted 39 lines
Regards,
Michael WangQuoted 34 lines
Signed-off-by Michael Wang <[email protected]>--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */
Quoted 26 lines · Michael Wang
Quoted 25 lines · NeilBrown
Quoted 11 lines · On Mon, 10 Sep 2012 16:30:11 +0800 Michael Wang <[email protected]>…
Quoted 10 lines · Michael Wang
Quoted 6 lines · Michael Wang
From: Michael Wang <[email protected]>
This patch replaces
list_for_each_continue_rcu()withlist_for_each_entry_continue_rcu()to save a few lines of code and allow removinglist_for_each_continue_rcu().Hi, Neil
Quoted 8 lines
Quoted 1 line
Could I get some comments on this patch?
Hi, Neil
Could I get some comments?
And please forgive and warn me if this patch has came to the wrong place...I get the address from
get_maintainer.Sorry, August was a bad month.
Quoted 8 lines
Quoted 4 lines
Yes, patch looks good. Shall I include it in my tree, do you want to submit them altogether through some rcu tree?
Either way is fine by me. If you want to submit it through some other tree,Acked-by NeilBrown <[email protected]>Thanks for your review ;-)
I think submit to rcu tree may be better, what's your opinion, Paul?
I am fine either way. If I don't see it in mainline this coming merge window, I will pull it into the -rcu tree.
Thanx, Paul
Quoted 56 lines
Regards,
Michael WangQuoted 51 lines
If not, it'll probably appear in my -next soonish.
Thanks,
NeilBrownQuoted 43 lines
Regards,
Michael WangQuoted 39 lines
Regards,
Michael WangQuoted 34 lines
Signed-off-by Michael Wang <[email protected]>--- drivers/md/bitmap.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)drivers/md/bitmap.c +3
-6@@ -163,20 +163,17 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde* As devices are only added or removed when raid_disk is < 0 and * nr_pending is 0 and In_sync is clear, the entries we return will * still be in the same position on the list when we re-enter -* list_for_each_continue_rcu. +* list_for_each_entry_continue_rcu. */ -struct list_head *pos;rcu_read_lock ();if (rdev ==NULL )/* start at the beginning */ - pos = &mddev->disks; + rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set);else {/* release the previous rdev and start from there. */ rdev_dec_pending (rdev, mddev); - pos = &rdev->same_set; } -list_for_each_continue_rcu (pos, &mddev->disks) { - rdev = list_entry(pos, struct md_rdev, same_set); +list_for_each_entry_continue_rcu (rdev, &mddev->disks, same_set) {if (rdev->raid_disk >=0 && !test_bit (Faulty, &rdev->flags)) {/* this is a usable devices */