aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/bitmap.c')
-rw-r--r--drivers/md/bitmap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 2bc56e2a3526..135a0907e9de 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -177,11 +177,16 @@ static struct md_rdev *next_active_rdev(struct md_rdev *rdev, struct mddev *mdde
177 * nr_pending is 0 and In_sync is clear, the entries we return will 177 * nr_pending is 0 and In_sync is clear, the entries we return will
178 * still be in the same position on the list when we re-enter 178 * still be in the same position on the list when we re-enter
179 * list_for_each_entry_continue_rcu. 179 * list_for_each_entry_continue_rcu.
180 *
181 * Note that if entered with 'rdev == NULL' to start at the
182 * beginning, we temporarily assign 'rdev' to an address which
183 * isn't really an rdev, but which can be used by
184 * list_for_each_entry_continue_rcu() to find the first entry.
180 */ 185 */
181 rcu_read_lock(); 186 rcu_read_lock();
182 if (rdev == NULL) 187 if (rdev == NULL)
183 /* start at the beginning */ 188 /* start at the beginning */
184 rdev = list_entry_rcu(&mddev->disks, struct md_rdev, same_set); 189 rdev = list_entry(&mddev->disks, struct md_rdev, same_set);
185 else { 190 else {
186 /* release the previous rdev and start from there. */ 191 /* release the previous rdev and start from there. */
187 rdev_dec_pending(rdev, mddev); 192 rdev_dec_pending(rdev, mddev);