summaryrefslogtreecommitdiffstats
path: root/block
diff options
context:
space:
mode:
authorMartin K. Petersen2014-09-27 01:20:03 +0200
committerJens Axboe2014-09-27 17:14:51 +0200
commit3aec2f41a8baeb70aa77556a4e4dcec7d9d70b4d (patch)
tree2725a81cae556798bd3f363c4e8e5595c1ce1aaf /block
parentblock: Add prefix to block integrity profile flags (diff)
downloadkernel-qcow2-linux-3aec2f41a8baeb70aa77556a4e4dcec7d9d70b4d.tar.gz
kernel-qcow2-linux-3aec2f41a8baeb70aa77556a4e4dcec7d9d70b4d.tar.xz
kernel-qcow2-linux-3aec2f41a8baeb70aa77556a4e4dcec7d9d70b4d.zip
block: Add a disk flag to block integrity profile
So far we have relied on the app tag size to determine whether a disk has been formatted with T10 protection information or not. However, not all target devices provide application tag storage. Add a flag to the block integrity profile that indicates whether the disk has been formatted with protection information. Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Sagi Grimberg <sagig@dev.mellanox.co.il> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r--block/blk-integrity.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/block/blk-integrity.c b/block/blk-integrity.c
index a7436ccc936b..1c6ba442cd91 100644
--- a/block/blk-integrity.c
+++ b/block/blk-integrity.c
@@ -307,6 +307,12 @@ static ssize_t integrity_generate_show(struct blk_integrity *bi, char *page)
return sprintf(page, "%d\n", (bi->flags & BLK_INTEGRITY_GENERATE) != 0);
}
+static ssize_t integrity_device_show(struct blk_integrity *bi, char *page)
+{
+ return sprintf(page, "%u\n",
+ (bi->flags & BLK_INTEGRITY_DEVICE_CAPABLE) != 0);
+}
+
static struct integrity_sysfs_entry integrity_format_entry = {
.attr = { .name = "format", .mode = S_IRUGO },
.show = integrity_format_show,
@@ -329,11 +335,17 @@ static struct integrity_sysfs_entry integrity_generate_entry = {
.store = integrity_generate_store,
};
+static struct integrity_sysfs_entry integrity_device_entry = {
+ .attr = { .name = "device_is_integrity_capable", .mode = S_IRUGO },
+ .show = integrity_device_show,
+};
+
static struct attribute *integrity_attrs[] = {
&integrity_format_entry.attr,
&integrity_tag_size_entry.attr,
&integrity_verify_entry.attr,
&integrity_generate_entry.attr,
+ &integrity_device_entry.attr,
NULL,
};