Skip to content

Commit

Permalink
md: tidy up rdev_for_each usage.
Browse files Browse the repository at this point in the history
md.h has an 'rdev_for_each()' macro for iterating the rdevs in an
mddev.  However it uses the 'safe' version of list_for_each_entry,
and so requires the extra variable, but doesn't include 'safe' in the
name, which is useful documentation.

Consequently some places use this safe version without needing it, and
many use an explicity list_for_each entry.

So:
 - rename rdev_for_each to rdev_for_each_safe
 - create a new rdev_for_each which uses the plain
   list_for_each_entry,
 - use the 'safe' version only where needed, and convert all other
   list_for_each_entry calls to use rdev_for_each.

Signed-off-by: NeilBrown <neilb@suse.de>
  • Loading branch information
NeilBrown committed Mar 19, 2012
1 parent d6b42dc commit dafb20f
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 63 deletions.
2 changes: 1 addition & 1 deletion drivers/md/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ static struct page *read_sb_page(struct mddev *mddev, loff_t offset,
did_alloc = 1;
}

list_for_each_entry(rdev, &mddev->disks, same_set) {
rdev_for_each(rdev, mddev) {
if (! test_bit(In_sync, &rdev->flags)
|| test_bit(Faulty, &rdev->flags))
continue;
Expand Down
16 changes: 8 additions & 8 deletions drivers/md/dm-raid.c
Original file line number Diff line number Diff line change
Expand Up @@ -615,14 +615,14 @@ static int read_disk_sb(struct md_rdev *rdev, int size)

static void super_sync(struct mddev *mddev, struct md_rdev *rdev)
{
struct md_rdev *r, *t;
struct md_rdev *r;
uint64_t failed_devices;
struct dm_raid_superblock *sb;

sb = page_address(rdev->sb_page);
failed_devices = le64_to_cpu(sb->failed_devices);

rdev_for_each(r, t, mddev)
rdev_for_each(r, mddev)
if ((r->raid_disk >= 0) && test_bit(Faulty, &r->flags))
failed_devices |= (1ULL << r->raid_disk);

Expand Down Expand Up @@ -707,7 +707,7 @@ static int super_init_validation(struct mddev *mddev, struct md_rdev *rdev)
struct dm_raid_superblock *sb;
uint32_t new_devs = 0;
uint32_t rebuilds = 0;
struct md_rdev *r, *t;
struct md_rdev *r;
struct dm_raid_superblock *sb2;

sb = page_address(rdev->sb_page);
Expand Down Expand Up @@ -750,7 +750,7 @@ static int super_init_validation(struct mddev *mddev, struct md_rdev *rdev)
* case the In_sync bit will /not/ be set and
* recovery_cp must be MaxSector.
*/
rdev_for_each(r, t, mddev) {
rdev_for_each(r, mddev) {
if (!test_bit(In_sync, &r->flags)) {
DMINFO("Device %d specified for rebuild: "
"Clearing superblock", r->raid_disk);
Expand Down Expand Up @@ -782,7 +782,7 @@ static int super_init_validation(struct mddev *mddev, struct md_rdev *rdev)
* Now we set the Faulty bit for those devices that are
* recorded in the superblock as failed.
*/
rdev_for_each(r, t, mddev) {
rdev_for_each(r, mddev) {
if (!r->sb_page)
continue;
sb2 = page_address(r->sb_page);
Expand Down Expand Up @@ -855,11 +855,11 @@ static int super_validate(struct mddev *mddev, struct md_rdev *rdev)
static int analyse_superblocks(struct dm_target *ti, struct raid_set *rs)
{
int ret;
struct md_rdev *rdev, *freshest, *tmp;
struct md_rdev *rdev, *freshest;
struct mddev *mddev = &rs->md;

freshest = NULL;
rdev_for_each(rdev, tmp, mddev) {
rdev_for_each(rdev, mddev) {
if (!rdev->meta_bdev)
continue;

Expand Down Expand Up @@ -888,7 +888,7 @@ static int analyse_superblocks(struct dm_target *ti, struct raid_set *rs)
if (super_validate(mddev, freshest))
return -EINVAL;

rdev_for_each(rdev, tmp, mddev)
rdev_for_each(rdev, mddev)
if ((rdev != freshest) && super_validate(mddev, rdev))
return -EINVAL;

Expand Down
2 changes: 1 addition & 1 deletion drivers/md/faulty.c
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,7 @@ static int run(struct mddev *mddev)
}
conf->nfaults = 0;

list_for_each_entry(rdev, &mddev->disks, same_set)
rdev_for_each(rdev, mddev)
conf->rdev = rdev;

md_set_array_sectors(mddev, faulty_size(mddev, 0, 0));
Expand Down
2 changes: 1 addition & 1 deletion drivers/md/linear.c
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ static struct linear_conf *linear_conf(struct mddev *mddev, int raid_disks)
cnt = 0;
conf->array_sectors = 0;

list_for_each_entry(rdev, &mddev->disks, same_set) {
rdev_for_each(rdev, mddev) {
int j = rdev->raid_disk;
struct dev_info *disk = conf->disks + j;
sector_t sectors;
Expand Down
Loading

0 comments on commit dafb20f

Please sign in to comment.