}
EXPORT_SYMBOL(blk_integrity_register);
+void blk_integrity_copy(struct gendisk *to, struct gendisk *from)
+{
+ memcpy(&to->queue->integrity, &from->queue->integrity,
+ sizeof(to->queue->integrity));
+ blk_integrity_init(to);
+}
+EXPORT_SYMBOL(blk_integrity_copy);
+
/**
* blk_integrity_unregister - Unregister block integrity profile
* @disk: disk whose integrity profile to unregister
* Register integrity profile during table load; we can do
* this because the final profile must match during resume.
*/
- blk_integrity_register(dm_disk(md),
- blk_get_integrity(template_disk));
+ blk_integrity_copy(dm_disk(md), template_disk);
return 0;
}
* All component devices are integrity capable and have matching
* profiles, register the common profile for the md device.
*/
- blk_integrity_register(mddev->gendisk,
- bdev_get_integrity(reference->bdev));
+ blk_integrity_copy(mddev->gendisk, reference->bdev->bd_disk);
pr_debug("md: data integrity enabled on %s\n", mdname(mddev));
if (bioset_integrity_create(&mddev->bio_set, BIO_POOL_SIZE) ||
void blk_integrity_register(struct gendisk *, struct blk_integrity *);
void blk_nointegrity_register(struct gendisk *disk, unsigned char meta_size,
u8 interval_exp);
+void blk_integrity_copy(struct gendisk *to, struct gendisk *from);
void blk_integrity_unregister(struct gendisk *);
int blk_integrity_compare(struct gendisk *, struct gendisk *);
int blk_rq_map_integrity_sg(struct request_queue *, struct bio *,
unsigned char meta_size, u8 interval_exp)
{
}
+static inline void blk_integrity_copy(struct gendisk *to, struct gendisk *from)
+{
+}
static inline void blk_integrity_unregister(struct gendisk *d)
{
}