1*e8dcf2d1SChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0 */ 2*e8dcf2d1SChristoph Hellwig #ifndef _BLK_ERROR_INJECTION_H 3*e8dcf2d1SChristoph Hellwig #define _BLK_ERROR_INJECTION_H 1 4*e8dcf2d1SChristoph Hellwig 5*e8dcf2d1SChristoph Hellwig #include <linux/jump_label.h> 6*e8dcf2d1SChristoph Hellwig 7*e8dcf2d1SChristoph Hellwig DECLARE_STATIC_KEY_FALSE(blk_error_injection_enabled); 8*e8dcf2d1SChristoph Hellwig 9*e8dcf2d1SChristoph Hellwig void blk_error_injection_init(struct gendisk *disk); 10*e8dcf2d1SChristoph Hellwig void blk_error_injection_exit(struct gendisk *disk); 11*e8dcf2d1SChristoph Hellwig bool __blk_error_inject(struct bio *bio); 12*e8dcf2d1SChristoph Hellwig static inline bool blk_error_inject(struct bio *bio) 13*e8dcf2d1SChristoph Hellwig { 14*e8dcf2d1SChristoph Hellwig if (IS_ENABLED(CONFIG_BLK_ERROR_INJECTION) && 15*e8dcf2d1SChristoph Hellwig static_branch_unlikely(&blk_error_injection_enabled) && 16*e8dcf2d1SChristoph Hellwig test_bit(GD_ERROR_INJECT, &bio->bi_bdev->bd_disk->state)) 17*e8dcf2d1SChristoph Hellwig return __blk_error_inject(bio); 18*e8dcf2d1SChristoph Hellwig return false; 19*e8dcf2d1SChristoph Hellwig } 20*e8dcf2d1SChristoph Hellwig 21*e8dcf2d1SChristoph Hellwig #endif /* _BLK_ERROR_INJECTION_H */ 22