tree 1621f68394ceaa4da86d89c6da3b93fd306415fc parent 3ec67ac1a399d576d48b0736096bcce7721fe3cf author NeilBrown <[EMAIL PROTECTED]> Sat, 10 Sep 2005 06:23:41 -0700 committer Linus Torvalds <[EMAIL PROTECTED]> Sat, 10 Sep 2005 06:39:09 -0700
[PATCH] md: fail IO request to md that require a barrier. md does not yet support BIO_RW_BARRIER, so be honest about it and fail (-EOPNOTSUPP) any such requests. Signed-off-by: Neil Brown <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> drivers/md/linear.c | 5 +++++ drivers/md/multipath.c | 5 +++++ drivers/md/raid0.c | 5 +++++ drivers/md/raid1.c | 4 ++++ drivers/md/raid10.c | 5 +++++ drivers/md/raid5.c | 5 +++++ drivers/md/raid6main.c | 5 +++++ 7 files changed, 34 insertions(+) diff --git a/drivers/md/linear.c b/drivers/md/linear.c --- a/drivers/md/linear.c +++ b/drivers/md/linear.c @@ -238,6 +238,11 @@ static int linear_make_request (request_ dev_info_t *tmp_dev; sector_t block; + if (unlikely(bio_barrier(bio))) { + bio_endio(bio, bio->bi_size, -EOPNOTSUPP); + return 0; + } + if (bio_data_dir(bio)==WRITE) { disk_stat_inc(mddev->gendisk, writes); disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c @@ -169,6 +169,11 @@ static int multipath_make_request (reque struct multipath_bh * mp_bh; struct multipath_info *multipath; + if (unlikely(bio_barrier(bio))) { + bio_endio(bio, bio->bi_size, -EOPNOTSUPP); + return 0; + } + mp_bh = mempool_alloc(conf->pool, GFP_NOIO); mp_bh->master_bio = bio; diff --git a/drivers/md/raid0.c b/drivers/md/raid0.c --- a/drivers/md/raid0.c +++ b/drivers/md/raid0.c @@ -404,6 +404,11 @@ static int raid0_make_request (request_q unsigned long chunk; sector_t block, rsect; + if (unlikely(bio_barrier(bio))) { + bio_endio(bio, bio->bi_size, -EOPNOTSUPP); + return 0; + } + if (bio_data_dir(bio)==WRITE) { disk_stat_inc(mddev->gendisk, writes); disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c @@ -555,6 +555,10 @@ static int make_request(request_queue_t unsigned long flags; struct bio_list bl; + if (unlikely(bio_barrier(bio))) { + bio_endio(bio, bio->bi_size, -EOPNOTSUPP); + return 0; + } /* * Register the new request and wait if the reconstruction diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -669,6 +669,11 @@ static int make_request(request_queue_t int i; int chunk_sects = conf->chunk_mask + 1; + if (unlikely(bio_barrier(bio))) { + bio_endio(bio, bio->bi_size, -EOPNOTSUPP); + return 0; + } + /* If this request crosses a chunk boundary, we need to * split it. This will only happen for 1 PAGE (or less) requests. */ diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -1411,6 +1411,11 @@ static int make_request (request_queue_t sector_t logical_sector, last_sector; struct stripe_head *sh; + if (unlikely(bio_barrier(bi))) { + bio_endio(bi, bi->bi_size, -EOPNOTSUPP); + return 0; + } + md_write_start(mddev, bi); if (bio_data_dir(bi)==WRITE) { diff --git a/drivers/md/raid6main.c b/drivers/md/raid6main.c --- a/drivers/md/raid6main.c +++ b/drivers/md/raid6main.c @@ -1570,6 +1570,11 @@ static int make_request (request_queue_t sector_t logical_sector, last_sector; struct stripe_head *sh; + if (unlikely(bio_barrier(bi))) { + bio_endio(bi, bi->bi_size, -EOPNOTSUPP); + return 0; + } + md_write_start(mddev, bi); if (bio_data_dir(bi)==WRITE) { - To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html