diff options
Diffstat (limited to 'fs/btrfs/check-integrity.c')
| -rw-r--r-- | fs/btrfs/check-integrity.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/check-integrity.c b/fs/btrfs/check-integrity.c index a3fdb4fe967d..833cf3c35b4d 100644 --- a/fs/btrfs/check-integrity.c +++ b/fs/btrfs/check-integrity.c @@ -1539,7 +1539,12 @@ static int btrfsic_map_block(struct btrfsic_state *state, u64 bytenr, u32 len,  	}  	device = multi->stripes[0].dev; -	block_ctx_out->dev = btrfsic_dev_state_lookup(device->bdev->bd_dev); +	if (test_bit(BTRFS_DEV_STATE_MISSING, &device->dev_state) || +	    !device->bdev || !device->name) +		block_ctx_out->dev = NULL; +	else +		block_ctx_out->dev = btrfsic_dev_state_lookup( +							device->bdev->bd_dev);  	block_ctx_out->dev_bytenr = multi->stripes[0].physical;  	block_ctx_out->start = bytenr;  	block_ctx_out->len = len; @@ -1624,7 +1629,7 @@ static int btrfsic_read_block(struct btrfsic_state *state,  		bio = btrfs_io_bio_alloc(num_pages - i);  		bio_set_dev(bio, block_ctx->dev->bdev);  		bio->bi_iter.bi_sector = dev_bytenr >> 9; -		bio_set_op_attrs(bio, REQ_OP_READ, 0); +		bio->bi_opf = REQ_OP_READ;  		for (j = i; j < num_pages; j++) {  			ret = bio_add_page(bio, block_ctx->pagev[j],  |