diff options
Diffstat (limited to 'drivers/md/bcache/request.c')
| -rw-r--r-- | drivers/md/bcache/request.c | 9 | 
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/md/bcache/request.c b/drivers/md/bcache/request.c index 51be355a3309..3bf35914bb57 100644 --- a/drivers/md/bcache/request.c +++ b/drivers/md/bcache/request.c @@ -395,7 +395,7 @@ static bool check_should_bypass(struct cached_dev *dc, struct bio *bio)  	 * unless the read-ahead request is for metadata (eg, for gfs2).  	 */  	if (bio->bi_opf & (REQ_RAHEAD|REQ_BACKGROUND) && -	    !(bio->bi_opf & REQ_META)) +	    !(bio->bi_opf & REQ_PRIO))  		goto skip;  	if (bio->bi_iter.bi_sector & (c->sb.block_size - 1) || @@ -850,7 +850,7 @@ static void cached_dev_read_done_bh(struct closure *cl)  	bch_mark_cache_accounting(s->iop.c, s->d,  				  !s->cache_missed, s->iop.bypass); -	trace_bcache_read(s->orig_bio, !s->cache_miss, s->iop.bypass); +	trace_bcache_read(s->orig_bio, !s->cache_missed, s->iop.bypass);  	if (s->iop.status)  		continue_at_nobarrier(cl, cached_dev_read_error, bcache_wq); @@ -877,7 +877,7 @@ static int cached_dev_cache_miss(struct btree *b, struct search *s,  	}  	if (!(bio->bi_opf & REQ_RAHEAD) && -	    !(bio->bi_opf & REQ_META) && +	    !(bio->bi_opf & REQ_PRIO) &&  	    s->iop.c->gc_stats.in_use < CUTOFF_CACHE_READA)  		reada = min_t(sector_t, dc->readahead >> 9,  			      get_capacity(bio->bi_disk) - bio_end_sector(bio)); @@ -1218,6 +1218,9 @@ static int cached_dev_ioctl(struct bcache_device *d, fmode_t mode,  {  	struct cached_dev *dc = container_of(d, struct cached_dev, disk); +	if (dc->io_disable) +		return -EIO; +  	return __blkdev_driver_ioctl(dc->bdev, mode, cmd, arg);  }  | 
