]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/md/raid0.c
cciss: add new hardware support
[linux-2.6-omap-h63xx.git] / drivers / md / raid0.c
index ef0da2d8495969de264563ce7ee6751afe002aff..914c04ddec7c64690cdb24a4b77c83172d4d38ab 100644 (file)
@@ -35,31 +35,10 @@ static void raid0_unplug(struct request_queue *q)
        for (i=0; i<mddev->raid_disks; i++) {
                struct request_queue *r_queue = bdev_get_queue(devlist[i]->bdev);
 
-               if (r_queue->unplug_fn)
-                       r_queue->unplug_fn(r_queue);
+               blk_unplug(r_queue);
        }
 }
 
-static int raid0_issue_flush(struct request_queue *q, struct gendisk *disk,
-                            sector_t *error_sector)
-{
-       mddev_t *mddev = q->queuedata;
-       raid0_conf_t *conf = mddev_to_conf(mddev);
-       mdk_rdev_t **devlist = conf->strip_zone[0].dev;
-       int i, ret = 0;
-
-       for (i=0; i<mddev->raid_disks && ret == 0; i++) {
-               struct block_device *bdev = devlist[i]->bdev;
-               struct request_queue *r_queue = bdev_get_queue(bdev);
-
-               if (!r_queue->issue_flush_fn)
-                       ret = -EOPNOTSUPP;
-               else
-                       ret = r_queue->issue_flush_fn(r_queue, bdev->bd_disk, error_sector);
-       }
-       return ret;
-}
-
 static int raid0_congested(void *data, int bits)
 {
        mddev_t *mddev = data;
@@ -93,11 +72,11 @@ static int create_strip_zones (mddev_t *mddev)
         */
        conf->nr_strip_zones = 0;
  
-       ITERATE_RDEV(mddev,rdev1,tmp1) {
+       rdev_for_each(rdev1, tmp1, mddev) {
                printk("raid0: looking at %s\n",
                        bdevname(rdev1->bdev,b));
                c = 0;
-               ITERATE_RDEV(mddev,rdev2,tmp2) {
+               rdev_for_each(rdev2, tmp2, mddev) {
                        printk("raid0:   comparing %s(%llu)",
                               bdevname(rdev1->bdev,b),
                               (unsigned long long)rdev1->size);
@@ -145,7 +124,7 @@ static int create_strip_zones (mddev_t *mddev)
        cnt = 0;
        smallest = NULL;
        zone->dev = conf->devlist;
-       ITERATE_RDEV(mddev, rdev1, tmp1) {
+       rdev_for_each(rdev1, tmp1, mddev) {
                int j = rdev1->raid_disk;
 
                if (j < 0 || j >= mddev->raid_disks) {
@@ -250,7 +229,6 @@ static int create_strip_zones (mddev_t *mddev)
 
        mddev->queue->unplug_fn = raid0_unplug;
 
-       mddev->queue->issue_flush_fn = raid0_issue_flush;
        mddev->queue->backing_dev_info.congested_fn = raid0_congested;
        mddev->queue->backing_dev_info.congested_data = mddev;
 
@@ -302,6 +280,7 @@ static int raid0_run (mddev_t *mddev)
               (mddev->chunk_size>>1)-1);
        blk_queue_max_sectors(mddev->queue, mddev->chunk_size >> 9);
        blk_queue_segment_boundary(mddev->queue, (mddev->chunk_size>>1) - 1);
+       mddev->queue->queue_lock = &mddev->queue->__queue_lock;
 
        conf = kmalloc(sizeof (raid0_conf_t), GFP_KERNEL);
        if (!conf)
@@ -315,7 +294,7 @@ static int raid0_run (mddev_t *mddev)
 
        /* calculate array device size */
        mddev->array_size = 0;
-       ITERATE_RDEV(mddev,rdev,tmp)
+       rdev_for_each(rdev, tmp, mddev)
                mddev->array_size += rdev->size;
 
        printk("raid0 : md_size is %llu blocks.\n", 
@@ -493,7 +472,7 @@ bad_map:
        bio_io_error(bio);
        return 0;
 }
-                          
+
 static void raid0_status (struct seq_file *seq, mddev_t *mddev)
 {
 #undef MD_DEBUG
@@ -501,18 +480,18 @@ static void raid0_status (struct seq_file *seq, mddev_t *mddev)
        int j, k, h;
        char b[BDEVNAME_SIZE];
        raid0_conf_t *conf = mddev_to_conf(mddev);
-  
+
        h = 0;
        for (j = 0; j < conf->nr_strip_zones; j++) {
                seq_printf(seq, "      z%d", j);
                if (conf->hash_table[h] == conf->strip_zone+j)
-                       seq_printf("(h%d)", h++);
+                       seq_printf(seq, "(h%d)", h++);
                seq_printf(seq, "=[");
                for (k = 0; k < conf->strip_zone[j].nb_dev; k++)
-                       seq_printf (seq, "%s/", bdevname(
+                       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 do=%d s=%d\n",
                                conf->strip_zone[j].zone_offset,
                                conf->strip_zone[j].dev_offset,
                                conf->strip_zone[j].size);