btrfs: sysfs: show used checksum driver per filesystem
authorJohannes Thumshirn <jthumshirn@suse.de>
Mon, 7 Oct 2019 09:11:04 +0000 (11:11 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 18 Nov 2019 16:51:43 +0000 (17:51 +0100)
Show the used driver for the checksum algorithm for the filesystem in
sysfs file /sys/fs/btrfs/UUID/features/checksum, eg.

  crc32c (crc32c-generic)

Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/sysfs.c

index 41eb6a313bf85813826f89243687ae546f395d1a..98979dd048a8888a10d09ae55ad0e1c11bc82211 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/spinlock.h>
 #include <linux/completion.h>
 #include <linux/bug.h>
+#include <crypto/hash.h>
 
 #include "ctree.h"
 #include "disk-io.h"
@@ -626,6 +627,19 @@ static ssize_t btrfs_metadata_uuid_show(struct kobject *kobj,
 
 BTRFS_ATTR(, metadata_uuid, btrfs_metadata_uuid_show);
 
+static ssize_t btrfs_checksum_show(struct kobject *kobj,
+                                  struct kobj_attribute *a, char *buf)
+{
+       struct btrfs_fs_info *fs_info = to_fs_info(kobj);
+       u16 csum_type = btrfs_super_csum_type(fs_info->super_copy);
+
+       return snprintf(buf, PAGE_SIZE, "%s (%s)\n",
+                       btrfs_super_csum_name(csum_type),
+                       crypto_shash_driver_name(fs_info->csum_shash));
+}
+
+BTRFS_ATTR(, checksum, btrfs_checksum_show);
+
 static const struct attribute *btrfs_attrs[] = {
        BTRFS_ATTR_PTR(, label),
        BTRFS_ATTR_PTR(, nodesize),
@@ -633,6 +647,7 @@ static const struct attribute *btrfs_attrs[] = {
        BTRFS_ATTR_PTR(, clone_alignment),
        BTRFS_ATTR_PTR(, quota_override),
        BTRFS_ATTR_PTR(, metadata_uuid),
+       BTRFS_ATTR_PTR(, checksum),
        NULL,
 };