Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 197477
b: refs/heads/master
c: 84707f3
h: refs/heads/master
i:
  197475: d255dee
v: v3
  • Loading branch information
NeilBrown committed May 18, 2010
1 parent 2f8dd68 commit f8ffb08
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 14 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c0cc75f84e0e413bce2dcabea74ef418da45c7c1
refs/heads/master: 84707f38e767ac470fd82af6c45a8cafe2bd1b9a
15 changes: 10 additions & 5 deletions trunk/drivers/md/raid0.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,10 @@ static void raid0_unplug(struct request_queue *q)
mddev_t *mddev = q->queuedata;
raid0_conf_t *conf = mddev->private;
mdk_rdev_t **devlist = conf->devlist;
int raid_disks = conf->strip_zone[0].nb_dev;
int i;

for (i=0; i<mddev->raid_disks; i++) {
for (i=0; i < raid_disks; i++) {
struct request_queue *r_queue = bdev_get_queue(devlist[i]->bdev);

blk_unplug(r_queue);
Expand All @@ -42,12 +43,13 @@ static int raid0_congested(void *data, int bits)
mddev_t *mddev = data;
raid0_conf_t *conf = mddev->private;
mdk_rdev_t **devlist = conf->devlist;
int raid_disks = conf->strip_zone[0].nb_dev;
int i, ret = 0;

if (mddev_congested(mddev, bits))
return 1;

for (i = 0; i < mddev->raid_disks && !ret ; i++) {
for (i = 0; i < raid_disks && !ret ; i++) {
struct request_queue *q = bdev_get_queue(devlist[i]->bdev);

ret |= bdi_congested(&q->backing_dev_info, bits);
Expand All @@ -65,14 +67,15 @@ static void dump_zones(mddev_t *mddev)
sector_t zone_start = 0;
char b[BDEVNAME_SIZE];
raid0_conf_t *conf = mddev->private;
int raid_disks = conf->strip_zone[0].nb_dev;
printk(KERN_INFO "******* %s configuration *********\n",
mdname(mddev));
h = 0;
for (j = 0; j < conf->nr_strip_zones; j++) {
printk(KERN_INFO "zone%d=[", j);
for (k = 0; k < conf->strip_zone[j].nb_dev; k++)
printk("%s/",
bdevname(conf->devlist[j*mddev->raid_disks
bdevname(conf->devlist[j*raid_disks
+ k]->bdev, b));
printk("]\n");

Expand Down Expand Up @@ -401,6 +404,7 @@ static mdk_rdev_t *map_sector(mddev_t *mddev, struct strip_zone *zone,
unsigned int sect_in_chunk;
sector_t chunk;
raid0_conf_t *conf = mddev->private;
int raid_disks = conf->strip_zone[0].nb_dev;
unsigned int chunk_sects = mddev->chunk_sectors;

if (is_power_of_2(chunk_sects)) {
Expand All @@ -423,7 +427,7 @@ static mdk_rdev_t *map_sector(mddev_t *mddev, struct strip_zone *zone,
* + the position in the chunk
*/
*sector_offset = (chunk * chunk_sects) + sect_in_chunk;
return conf->devlist[(zone - conf->strip_zone)*mddev->raid_disks
return conf->devlist[(zone - conf->strip_zone)*raid_disks
+ sector_div(sector, zone->nb_dev)];
}

Expand Down Expand Up @@ -518,6 +522,7 @@ static void raid0_status(struct seq_file *seq, mddev_t *mddev)
int j, k, h;
char b[BDEVNAME_SIZE];
raid0_conf_t *conf = mddev->private;
int raid_disks = conf->strip_zone[0].nb_dev;

sector_t zone_size;
sector_t zone_start = 0;
Expand All @@ -528,7 +533,7 @@ static void raid0_status(struct seq_file *seq, mddev_t *mddev)
seq_printf(seq, "=[");
for (k = 0; k < conf->strip_zone[j].nb_dev; k++)
seq_printf(seq, "%s/", bdevname(
conf->devlist[j*mddev->raid_disks + k]
conf->devlist[j*raid_disks + k]
->bdev, b));

zone_size = conf->strip_zone[j].zone_end - zone_start;
Expand Down
16 changes: 8 additions & 8 deletions trunk/drivers/md/raid10.c
Original file line number Diff line number Diff line change
Expand Up @@ -600,7 +600,7 @@ static void unplug_slaves(mddev_t *mddev)
int i;

rcu_read_lock();
for (i=0; i<mddev->raid_disks; i++) {
for (i=0; i < conf->raid_disks; i++) {
mdk_rdev_t *rdev = rcu_dereference(conf->mirrors[i].rdev);
if (rdev && !test_bit(Faulty, &rdev->flags) && atomic_read(&rdev->nr_pending)) {
struct request_queue *r_queue = bdev_get_queue(rdev->bdev);
Expand Down Expand Up @@ -634,7 +634,7 @@ static int raid10_congested(void *data, int bits)
if (mddev_congested(mddev, bits))
return 1;
rcu_read_lock();
for (i = 0; i < mddev->raid_disks && ret == 0; i++) {
for (i = 0; i < conf->raid_disks && ret == 0; i++) {
mdk_rdev_t *rdev = rcu_dereference(conf->mirrors[i].rdev);
if (rdev && !test_bit(Faulty, &rdev->flags)) {
struct request_queue *q = bdev_get_queue(rdev->bdev);
Expand Down Expand Up @@ -1131,7 +1131,7 @@ static int raid10_add_disk(mddev_t *mddev, mdk_rdev_t *rdev)
int mirror;
mirror_info_t *p;
int first = 0;
int last = mddev->raid_disks - 1;
int last = conf->raid_disks - 1;

if (mddev->recovery_cp < MaxSector)
/* only hot-add to in-sync arrays, as recovery is
Expand Down Expand Up @@ -2139,7 +2139,7 @@ raid10_size(mddev_t *mddev, sector_t sectors, int raid_disks)
conf_t *conf = mddev->private;

if (!raid_disks)
raid_disks = mddev->raid_disks;
raid_disks = conf->raid_disks;
if (!sectors)
sectors = mddev->dev_sectors;

Expand Down Expand Up @@ -2250,7 +2250,7 @@ static int run(mddev_t *mddev)

list_for_each_entry(rdev, &mddev->disks, same_set) {
disk_idx = rdev->raid_disk;
if (disk_idx >= mddev->raid_disks
if (disk_idx >= conf->raid_disks
|| disk_idx < 0)
continue;
disk = conf->mirrors + disk_idx;
Expand Down Expand Up @@ -2311,8 +2311,8 @@ static int run(mddev_t *mddev)
mdname(mddev));
printk(KERN_INFO
"raid10: raid set %s active with %d out of %d devices\n",
mdname(mddev), mddev->raid_disks - mddev->degraded,
mddev->raid_disks);
mdname(mddev), conf->raid_disks - mddev->degraded,
conf->raid_disks);
/*
* Ok, everything is just fine now
*/
Expand All @@ -2335,7 +2335,7 @@ static int run(mddev_t *mddev)
mddev->queue->backing_dev_info.ra_pages = 2* stripe;
}

if (conf->near_copies < mddev->raid_disks)
if (conf->near_copies < conf->raid_disks)
blk_queue_merge_bvec(mddev->queue, raid10_mergeable_bvec);
md_integrity_register(mddev);
return 0;
Expand Down

0 comments on commit f8ffb08

Please sign in to comment.