#endif
}
+void blk_nointegrity_register(struct gendisk *disk, unsigned char meta_size,
+ u8 interval_exp)
+{
+ struct blk_integrity *bi = &disk->queue->integrity;
+
+ bi->flags = 0;
+ bi->profile = &nop_profile;
+ bi->tuple_size = meta_size;
+ bi->tag_size = meta_size;
+ if (interval_exp)
+ bi->interval_exp = interval_exp;
+ else
+ bi->interval_exp = ilog2(queue_logical_block_size(disk->queue));
+ blk_integrity_init(disk);
+}
+EXPORT_SYMBOL(blk_nointegrity_register);
+
/**
* blk_integrity_register - Register a gendisk as being integrity-capable
* @disk: struct gendisk pointer to make integrity-aware
static void dm_integrity_set(struct dm_target *ti, struct dm_integrity_c *ic)
{
struct gendisk *disk = dm_disk(dm_table_get_md(ti->table));
- struct blk_integrity bi;
- memset(&bi, 0, sizeof(bi));
- bi.tuple_size = ic->tag_size;
- bi.tag_size = bi.tuple_size;
- bi.interval_exp = ic->sb->log2_sectors_per_block + SECTOR_SHIFT;
-
- blk_integrity_register(disk, &bi);
+ blk_nointegrity_register(disk, ic->tag_size,
+ ic->sb->log2_sectors_per_block + SECTOR_SHIFT);
blk_queue_max_integrity_segments(disk->queue, UINT_MAX);
}
.getgeo = btt_getgeo,
};
-static int nd_integrity_init(struct gendisk *disk, unsigned long meta_size)
-{
- struct blk_integrity bi;
-
- if (meta_size == 0)
- return 0;
-
- memset(&bi, 0, sizeof(bi));
-
- bi.tuple_size = meta_size;
- bi.tag_size = meta_size;
-
- blk_integrity_register(disk, &bi);
- blk_queue_max_integrity_segments(disk->queue, 1);
-
- return 0;
-}
-
static int btt_blk_init(struct btt *btt)
{
struct nd_btt *nd_btt = btt->nd_btt;
blk_queue_flag_set(QUEUE_FLAG_NONROT, btt->btt_disk->queue);
if (btt_meta_size(btt) && IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY)) {
- rc = nd_integrity_init(btt->btt_disk, btt_meta_size(btt));
- if (rc)
- goto out_cleanup_disk;
+ blk_nointegrity_register(btt->btt_disk, btt_meta_size(btt), 0);
+ blk_queue_max_integrity_segments(btt->btt_disk->queue, 1);
}
set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9);
#ifdef CONFIG_BLK_DEV_INTEGRITY
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_unregister(struct gendisk *);
int blk_integrity_compare(struct gendisk *, struct gendisk *);
int blk_rq_map_integrity_sg(struct request_queue *, struct bio *,
struct blk_integrity *b)
{
}
+static inline void blk_nointegrity_register(struct gendisk *disk,
+ unsigned char meta_size, u8 interval_exp)
+{
+}
static inline void blk_integrity_unregister(struct gendisk *d)
{
}