diff options
author | Christoph Hellwig <hch@lst.de> | 2010-08-07 12:20:39 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-08-07 12:20:39 -0400 |
commit | 7b6d91daee5cac6402186ff224c3af39d79f4a0e (patch) | |
tree | b1518cf0b6c301178e0a320f80610cd5b3aa7625 /drivers/md/raid1.c | |
parent | 33659ebbae262228eef4e0fe990f393d1f0ed941 (diff) |
block: unify flags for struct bio and struct request
Remove the current bio flags and reuse the request flags for the bio, too.
This allows to more easily trace the type of I/O from the filesystem
down to the block driver. There were two flags in the bio that were
missing in the requests: BIO_RW_UNPLUG and BIO_RW_AHEAD. Also I've
renamed two request flags that had a superflous RW in them.
Note that the flags are in bio.h despite having the REQ_ name - as
blkdev.h includes bio.h that is the only way to go for now.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'drivers/md/raid1.c')
-rw-r--r-- | drivers/md/raid1.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index a948da8012de..73cc74ffc26b 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -787,7 +787,7 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
787 | struct bio_list bl; | 787 | struct bio_list bl; |
788 | struct page **behind_pages = NULL; | 788 | struct page **behind_pages = NULL; |
789 | const int rw = bio_data_dir(bio); | 789 | const int rw = bio_data_dir(bio); |
790 | const bool do_sync = bio_rw_flagged(bio, BIO_RW_SYNCIO); | 790 | const bool do_sync = (bio->bi_rw & REQ_SYNC); |
791 | bool do_barriers; | 791 | bool do_barriers; |
792 | mdk_rdev_t *blocked_rdev; | 792 | mdk_rdev_t *blocked_rdev; |
793 | 793 | ||
@@ -822,7 +822,7 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
822 | finish_wait(&conf->wait_barrier, &w); | 822 | finish_wait(&conf->wait_barrier, &w); |
823 | } | 823 | } |
824 | if (unlikely(!mddev->barriers_work && | 824 | if (unlikely(!mddev->barriers_work && |
825 | bio_rw_flagged(bio, BIO_RW_BARRIER))) { | 825 | (bio->bi_rw & REQ_HARDBARRIER))) { |
826 | if (rw == WRITE) | 826 | if (rw == WRITE) |
827 | md_write_end(mddev); | 827 | md_write_end(mddev); |
828 | bio_endio(bio, -EOPNOTSUPP); | 828 | bio_endio(bio, -EOPNOTSUPP); |
@@ -877,7 +877,7 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
877 | read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; | 877 | read_bio->bi_sector = r1_bio->sector + mirror->rdev->data_offset; |
878 | read_bio->bi_bdev = mirror->rdev->bdev; | 878 | read_bio->bi_bdev = mirror->rdev->bdev; |
879 | read_bio->bi_end_io = raid1_end_read_request; | 879 | read_bio->bi_end_io = raid1_end_read_request; |
880 | read_bio->bi_rw = READ | (do_sync << BIO_RW_SYNCIO); | 880 | read_bio->bi_rw = READ | do_sync; |
881 | read_bio->bi_private = r1_bio; | 881 | read_bio->bi_private = r1_bio; |
882 | 882 | ||
883 | generic_make_request(read_bio); | 883 | generic_make_request(read_bio); |
@@ -959,7 +959,7 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
959 | atomic_set(&r1_bio->remaining, 0); | 959 | atomic_set(&r1_bio->remaining, 0); |
960 | atomic_set(&r1_bio->behind_remaining, 0); | 960 | atomic_set(&r1_bio->behind_remaining, 0); |
961 | 961 | ||
962 | do_barriers = bio_rw_flagged(bio, BIO_RW_BARRIER); | 962 | do_barriers = bio->bi_rw & REQ_HARDBARRIER; |
963 | if (do_barriers) | 963 | if (do_barriers) |
964 | set_bit(R1BIO_Barrier, &r1_bio->state); | 964 | set_bit(R1BIO_Barrier, &r1_bio->state); |
965 | 965 | ||
@@ -975,8 +975,7 @@ static int make_request(mddev_t *mddev, struct bio * bio) | |||
975 | mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; | 975 | mbio->bi_sector = r1_bio->sector + conf->mirrors[i].rdev->data_offset; |
976 | mbio->bi_bdev = conf->mirrors[i].rdev->bdev; | 976 | mbio->bi_bdev = conf->mirrors[i].rdev->bdev; |
977 | mbio->bi_end_io = raid1_end_write_request; | 977 | mbio->bi_end_io = raid1_end_write_request; |
978 | mbio->bi_rw = WRITE | (do_barriers << BIO_RW_BARRIER) | | 978 | mbio->bi_rw = WRITE | do_barriers | do_sync; |
979 | (do_sync << BIO_RW_SYNCIO); | ||
980 | mbio->bi_private = r1_bio; | 979 | mbio->bi_private = r1_bio; |
981 | 980 | ||
982 | if (behind_pages) { | 981 | if (behind_pages) { |
@@ -1633,7 +1632,7 @@ static void raid1d(mddev_t *mddev) | |||
1633 | sync_request_write(mddev, r1_bio); | 1632 | sync_request_write(mddev, r1_bio); |
1634 | unplug = 1; | 1633 | unplug = 1; |
1635 | } else if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) { | 1634 | } else if (test_bit(R1BIO_BarrierRetry, &r1_bio->state)) { |
1636 | /* some requests in the r1bio were BIO_RW_BARRIER | 1635 | /* some requests in the r1bio were REQ_HARDBARRIER |
1637 | * requests which failed with -EOPNOTSUPP. Hohumm.. | 1636 | * requests which failed with -EOPNOTSUPP. Hohumm.. |
1638 | * Better resubmit without the barrier. | 1637 | * Better resubmit without the barrier. |
1639 | * We know which devices to resubmit for, because | 1638 | * We know which devices to resubmit for, because |
@@ -1641,7 +1640,7 @@ static void raid1d(mddev_t *mddev) | |||
1641 | * We already have a nr_pending reference on these rdevs. | 1640 | * We already have a nr_pending reference on these rdevs. |
1642 | */ | 1641 | */ |
1643 | int i; | 1642 | int i; |
1644 | const bool do_sync = bio_rw_flagged(r1_bio->master_bio, BIO_RW_SYNCIO); | 1643 | const bool do_sync = (r1_bio->master_bio->bi_rw & REQ_SYNC); |
1645 | clear_bit(R1BIO_BarrierRetry, &r1_bio->state); | 1644 | clear_bit(R1BIO_BarrierRetry, &r1_bio->state); |
1646 | clear_bit(R1BIO_Barrier, &r1_bio->state); | 1645 | clear_bit(R1BIO_Barrier, &r1_bio->state); |
1647 | for (i=0; i < conf->raid_disks; i++) | 1646 | for (i=0; i < conf->raid_disks; i++) |
@@ -1662,8 +1661,7 @@ static void raid1d(mddev_t *mddev) | |||
1662 | conf->mirrors[i].rdev->data_offset; | 1661 | conf->mirrors[i].rdev->data_offset; |
1663 | bio->bi_bdev = conf->mirrors[i].rdev->bdev; | 1662 | bio->bi_bdev = conf->mirrors[i].rdev->bdev; |
1664 | bio->bi_end_io = raid1_end_write_request; | 1663 | bio->bi_end_io = raid1_end_write_request; |
1665 | bio->bi_rw = WRITE | | 1664 | bio->bi_rw = WRITE | do_sync; |
1666 | (do_sync << BIO_RW_SYNCIO); | ||
1667 | bio->bi_private = r1_bio; | 1665 | bio->bi_private = r1_bio; |
1668 | r1_bio->bios[i] = bio; | 1666 | r1_bio->bios[i] = bio; |
1669 | generic_make_request(bio); | 1667 | generic_make_request(bio); |
@@ -1698,7 +1696,7 @@ static void raid1d(mddev_t *mddev) | |||
1698 | (unsigned long long)r1_bio->sector); | 1696 | (unsigned long long)r1_bio->sector); |
1699 | raid_end_bio_io(r1_bio); | 1697 | raid_end_bio_io(r1_bio); |
1700 | } else { | 1698 | } else { |
1701 | const bool do_sync = bio_rw_flagged(r1_bio->master_bio, BIO_RW_SYNCIO); | 1699 | const bool do_sync = r1_bio->master_bio->bi_rw & REQ_SYNC; |
1702 | r1_bio->bios[r1_bio->read_disk] = | 1700 | r1_bio->bios[r1_bio->read_disk] = |
1703 | mddev->ro ? IO_BLOCKED : NULL; | 1701 | mddev->ro ? IO_BLOCKED : NULL; |
1704 | r1_bio->read_disk = disk; | 1702 | r1_bio->read_disk = disk; |
@@ -1715,7 +1713,7 @@ static void raid1d(mddev_t *mddev) | |||
1715 | bio->bi_sector = r1_bio->sector + rdev->data_offset; | 1713 | bio->bi_sector = r1_bio->sector + rdev->data_offset; |
1716 | bio->bi_bdev = rdev->bdev; | 1714 | bio->bi_bdev = rdev->bdev; |
1717 | bio->bi_end_io = raid1_end_read_request; | 1715 | bio->bi_end_io = raid1_end_read_request; |
1718 | bio->bi_rw = READ | (do_sync << BIO_RW_SYNCIO); | 1716 | bio->bi_rw = READ | do_sync; |
1719 | bio->bi_private = r1_bio; | 1717 | bio->bi_private = r1_bio; |
1720 | unplug = 1; | 1718 | unplug = 1; |
1721 | generic_make_request(bio); | 1719 | generic_make_request(bio); |