zone->dev = conf->strip_zone[i-1].dev + mddev->raid_disks;
 
                printk("raid0: zone %d\n", i);
-               zone->dev_offset = current_offset;
+               zone->dev_start = current_offset * 2;
                smallest = NULL;
                c = 0;
 
                x = sector >> chunksect_bits;
                tmp_dev = zone->dev[sector_div(x, zone->nb_dev)];
        }
-       rsect = (((chunk << (chunksect_bits - 1)) + zone->dev_offset)<<1)
-               + sect_in_chunk;
+       rsect = (chunk << chunksect_bits) + zone->dev_start + sect_in_chunk;
  
        bio->bi_bdev = tmp_dev->bdev;
        bio->bi_sector = rsect + tmp_dev->data_offset;
                        seq_printf(seq, "%s/", bdevname(
                                conf->strip_zone[j].dev[k]->bdev,b));
 
-               seq_printf(seq, "] zo=%d do=%d s=%d\n",
+               seq_printf(seq, "] zo=%d ds=%d s=%d\n",
                                conf->strip_zone[j].zone_offset,
-                               conf->strip_zone[j].dev_offset,
+                               conf->strip_zone[j].dev_start,
                                conf->strip_zone[j].size);
        }
 #endif
 
 struct strip_zone
 {
        sector_t zone_offset;   /* Zone offset in md_dev */
-       sector_t dev_offset;    /* Zone offset in real dev */
+       sector_t dev_start;     /* Zone offset in real dev (in sectors) */
        sector_t size;          /* Zone size */
        int nb_dev;             /* # of devices attached to the zone */
        mdk_rdev_t **dev;       /* Devices attached to the zone */