aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/raid10.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r--drivers/md/raid10.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 0cd9672cf9cb..ea5fc0b6a84c 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -830,7 +830,7 @@ static void unfreeze_array(conf_t *conf)
830 spin_unlock_irq(&conf->resync_lock); 830 spin_unlock_irq(&conf->resync_lock);
831} 831}
832 832
833static int make_request(mddev_t *mddev, struct bio * bio) 833static void make_request(mddev_t *mddev, struct bio * bio)
834{ 834{
835 conf_t *conf = mddev->private; 835 conf_t *conf = mddev->private;
836 mirror_info_t *mirror; 836 mirror_info_t *mirror;
@@ -849,7 +849,7 @@ static int make_request(mddev_t *mddev, struct bio * bio)
849 849
850 if (unlikely(bio->bi_rw & REQ_FLUSH)) { 850 if (unlikely(bio->bi_rw & REQ_FLUSH)) {
851 md_flush_request(mddev, bio); 851 md_flush_request(mddev, bio);
852 return 0; 852 return;
853 } 853 }
854 854
855 /* If this request crosses a chunk boundary, we need to 855 /* If this request crosses a chunk boundary, we need to
@@ -881,10 +881,8 @@ static int make_request(mddev_t *mddev, struct bio * bio)
881 conf->nr_waiting++; 881 conf->nr_waiting++;
882 spin_unlock_irq(&conf->resync_lock); 882 spin_unlock_irq(&conf->resync_lock);
883 883
884 if (make_request(mddev, &bp->bio1)) 884 make_request(mddev, &bp->bio1);
885 generic_make_request(&bp->bio1); 885 make_request(mddev, &bp->bio2);
886 if (make_request(mddev, &bp->bio2))
887 generic_make_request(&bp->bio2);
888 886
889 spin_lock_irq(&conf->resync_lock); 887 spin_lock_irq(&conf->resync_lock);
890 conf->nr_waiting--; 888 conf->nr_waiting--;
@@ -892,14 +890,14 @@ static int make_request(mddev_t *mddev, struct bio * bio)
892 spin_unlock_irq(&conf->resync_lock); 890 spin_unlock_irq(&conf->resync_lock);
893 891
894 bio_pair_release(bp); 892 bio_pair_release(bp);
895 return 0; 893 return;
896 bad_map: 894 bad_map:
897 printk("md/raid10:%s: make_request bug: can't convert block across chunks" 895 printk("md/raid10:%s: make_request bug: can't convert block across chunks"
898 " or bigger than %dk %llu %d\n", mdname(mddev), chunk_sects/2, 896 " or bigger than %dk %llu %d\n", mdname(mddev), chunk_sects/2,
899 (unsigned long long)bio->bi_sector, bio->bi_size >> 10); 897 (unsigned long long)bio->bi_sector, bio->bi_size >> 10);
900 898
901 bio_io_error(bio); 899 bio_io_error(bio);
902 return 0; 900 return;
903 } 901 }
904 902
905 md_write_start(mddev, bio); 903 md_write_start(mddev, bio);
@@ -942,7 +940,7 @@ read_again:
942 slot = r10_bio->read_slot; 940 slot = r10_bio->read_slot;
943 if (disk < 0) { 941 if (disk < 0) {
944 raid_end_bio_io(r10_bio); 942 raid_end_bio_io(r10_bio);
945 return 0; 943 return;
946 } 944 }
947 mirror = conf->mirrors + disk; 945 mirror = conf->mirrors + disk;
948 946
@@ -990,7 +988,7 @@ read_again:
990 goto read_again; 988 goto read_again;
991 } else 989 } else
992 generic_make_request(read_bio); 990 generic_make_request(read_bio);
993 return 0; 991 return;
994 } 992 }
995 993
996 /* 994 /*
@@ -1158,7 +1156,6 @@ retry_write:
1158 1156
1159 if (do_sync || !mddev->bitmap || !plugged) 1157 if (do_sync || !mddev->bitmap || !plugged)
1160 md_wakeup_thread(mddev->thread); 1158 md_wakeup_thread(mddev->thread);
1161 return 0;
1162} 1159}
1163 1160
1164static void status(struct seq_file *seq, mddev_t *mddev) 1161static void status(struct seq_file *seq, mddev_t *mddev)