raid1.c (3fa841d7e7266f6fcc1b3885b905f5153ba897d8) | raid1.c (1ef04fefe2241087d9db7e9615c3f11b516e36cf) |
---|---|
1/* 2 * raid1.c : Multiple Devices driver for Linux 3 * 4 * Copyright (C) 1999, 2000, 2001 Ingo Molnar, Red Hat 5 * 6 * Copyright (C) 1996, 1997, 1998 Ingo Molnar, Miguel de Icaza, Gadi Oxman 7 * 8 * RAID-1 management functions. --- 840 unchanged lines hidden (view full) --- 849 850 read_bio = bio_clone(bio, GFP_NOIO); 851 852 r1_bio->bios[rdisk] = read_bio; 853 854 read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; 855 read_bio->bi_bdev = mirror->rdev->bdev; 856 read_bio->bi_end_io = raid1_end_read_request; | 1/* 2 * raid1.c : Multiple Devices driver for Linux 3 * 4 * Copyright (C) 1999, 2000, 2001 Ingo Molnar, Red Hat 5 * 6 * Copyright (C) 1996, 1997, 1998 Ingo Molnar, Miguel de Icaza, Gadi Oxman 7 * 8 * RAID-1 management functions. --- 840 unchanged lines hidden (view full) --- 849 850 read_bio = bio_clone(bio, GFP_NOIO); 851 852 r1_bio->bios[rdisk] = read_bio; 853 854 read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; 855 read_bio->bi_bdev = mirror->rdev->bdev; 856 read_bio->bi_end_io = raid1_end_read_request; |
857 read_bio->bi_rw = READ | do_sync; | 857 read_bio->bi_rw = READ | (do_sync << BIO_RW_SYNCIO); |
858 read_bio->bi_private = r1_bio; 859 860 generic_make_request(read_bio); 861 return 0; 862 } 863 864 /* 865 * WRITE: --- 75 unchanged lines hidden (view full) --- 941 continue; 942 943 mbio = bio_clone(bio, GFP_NOIO); 944 r1_bio->bios[i] = mbio; 945 946 mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; 947 mbio->bi_bdev = conf->mirrors[i].rdev->bdev; 948 mbio->bi_end_io = raid1_end_write_request; | 858 read_bio->bi_private = r1_bio; 859 860 generic_make_request(read_bio); 861 return 0; 862 } 863 864 /* 865 * WRITE: --- 75 unchanged lines hidden (view full) --- 941 continue; 942 943 mbio = bio_clone(bio, GFP_NOIO); 944 r1_bio->bios[i] = mbio; 945 946 mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; 947 mbio->bi_bdev = conf->mirrors[i].rdev->bdev; 948 mbio->bi_end_io = raid1_end_write_request; |
949 mbio->bi_rw = WRITE | do_barriers | do_sync; | 949 mbio->bi_rw = WRITE | (do_barriers << BIO_RW_BARRIER) | 950 (do_sync << BIO_RW_SYNCIO); |
950 mbio->bi_private = r1_bio; 951 952 if (behind_pages) { 953 struct bio_vec *bvec; 954 int j; 955 956 /* Yes, I really want the '__' version so that 957 * we clear any unused pointer in the io_vec, rather --- 663 unchanged lines hidden (view full) --- 1621 * this might be a write-behind device */ 1622 __bio_for_each_segment(bvec, bio, j, 0) 1623 bvec->bv_page = bio_iovec_idx(r1_bio->bios[i], j)->bv_page; 1624 bio_put(r1_bio->bios[i]); 1625 bio->bi_sector = r1_bio->sector + 1626 conf->mirrors[i].rdev->data_offset; 1627 bio->bi_bdev = conf->mirrors[i].rdev->bdev; 1628 bio->bi_end_io = raid1_end_write_request; | 951 mbio->bi_private = r1_bio; 952 953 if (behind_pages) { 954 struct bio_vec *bvec; 955 int j; 956 957 /* Yes, I really want the '__' version so that 958 * we clear any unused pointer in the io_vec, rather --- 663 unchanged lines hidden (view full) --- 1622 * this might be a write-behind device */ 1623 __bio_for_each_segment(bvec, bio, j, 0) 1624 bvec->bv_page = bio_iovec_idx(r1_bio->bios[i], j)->bv_page; 1625 bio_put(r1_bio->bios[i]); 1626 bio->bi_sector = r1_bio->sector + 1627 conf->mirrors[i].rdev->data_offset; 1628 bio->bi_bdev = conf->mirrors[i].rdev->bdev; 1629 bio->bi_end_io = raid1_end_write_request; |
1629 bio->bi_rw = WRITE | do_sync; | 1630 bio->bi_rw = WRITE | 1631 (do_sync << BIO_RW_SYNCIO); |
1630 bio->bi_private = r1_bio; 1631 r1_bio->bios[i] = bio; 1632 generic_make_request(bio); 1633 } 1634 } else { 1635 int disk; 1636 1637 /* we got a read error. Maybe the drive is bad. Maybe just --- 32 unchanged lines hidden (view full) --- 1670 if (printk_ratelimit()) 1671 printk(KERN_ERR "raid1: %s: redirecting sector %llu to" 1672 " another mirror\n", 1673 bdevname(rdev->bdev,b), 1674 (unsigned long long)r1_bio->sector); 1675 bio->bi_sector = r1_bio->sector + rdev->data_offset; 1676 bio->bi_bdev = rdev->bdev; 1677 bio->bi_end_io = raid1_end_read_request; | 1632 bio->bi_private = r1_bio; 1633 r1_bio->bios[i] = bio; 1634 generic_make_request(bio); 1635 } 1636 } else { 1637 int disk; 1638 1639 /* we got a read error. Maybe the drive is bad. Maybe just --- 32 unchanged lines hidden (view full) --- 1672 if (printk_ratelimit()) 1673 printk(KERN_ERR "raid1: %s: redirecting sector %llu to" 1674 " another mirror\n", 1675 bdevname(rdev->bdev,b), 1676 (unsigned long long)r1_bio->sector); 1677 bio->bi_sector = r1_bio->sector + rdev->data_offset; 1678 bio->bi_bdev = rdev->bdev; 1679 bio->bi_end_io = raid1_end_read_request; |
1678 bio->bi_rw = READ | do_sync; | 1680 bio->bi_rw = READ | (do_sync << BIO_RW_SYNCIO); |
1679 bio->bi_private = r1_bio; 1680 unplug = 1; 1681 generic_make_request(bio); 1682 } 1683 } 1684 } 1685 if (unplug) 1686 unplug_slaves(mddev); --- 628 unchanged lines hidden --- | 1681 bio->bi_private = r1_bio; 1682 unplug = 1; 1683 generic_make_request(bio); 1684 } 1685 } 1686 } 1687 if (unplug) 1688 unplug_slaves(mddev); --- 628 unchanged lines hidden --- |