From: NeilBrown md does not yet support BIO_RW_BARRIER, so be honest about it and fail (-EOPNOTSUPP) any such requests. Signed-off-by: Neil Brown Signed-off-by: Andrew Morton --- 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 -puN drivers/md/linear.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/linear.c --- devel/drivers/md/linear.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/linear.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/multipath.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/multipath.c --- devel/drivers/md/multipath.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/multipath.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/raid0.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/raid0.c --- devel/drivers/md/raid0.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/raid0.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/raid10.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/raid10.c --- devel/drivers/md/raid10.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/raid10.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/raid1.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/raid1.c --- devel/drivers/md/raid1.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/raid1.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/raid5.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/raid5.c --- devel/drivers/md/raid5.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/raid5.c 2005-08-03 22:08:28.000000000 -0700 @@ -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 -puN drivers/md/raid6main.c~md-fail-io-request-to-md-that-require-a-barrier drivers/md/raid6main.c --- devel/drivers/md/raid6main.c~md-fail-io-request-to-md-that-require-a-barrier 2005-08-03 22:08:28.000000000 -0700 +++ devel-akpm/drivers/md/raid6main.c 2005-08-03 22:08:28.000000000 -0700 @@ -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) { _