From: Johannes Thumshirn <jth@kernel.org>
To: David Sterba <dsterba@suse.cz>
Cc: "linux-btrfs @ vger . kernel . org" <linux-btrfs@vger.kernel.org>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
Johannes Thumshirn <jthumshirn@suse.de>
Subject: [PATCH v2 1/5] btrfs-progs: pass in fs_info to btrfs_csum_data
Date: Thu, 14 May 2020 11:34:29 +0200 [thread overview]
Message-ID: <20200514093433.6818-2-jth@kernel.org> (raw)
In-Reply-To: <20200514093433.6818-1-jth@kernel.org>
From: Johannes Thumshirn <johannes.thumshirn@wdc.com>
For passing authentication keys to the checksumming functions we need a
container for the key.
Pass in a btrfs_fs_info to btrfs_csum_data() so we can use the fs_info as
a container for the authentication key.
Note this is not always possible for all callers of btrfs_csum_data() so
we're just passing in NULL if it is not directly possible.
Functions calling btrfs_csum_data() with a NULL fs_info argument are
currently not supported in the context of an authenticated file-system.
Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
---
btrfs-sb-mod.c | 4 ++--
check/main.c | 2 +-
cmds/inspect-dump-super.c | 2 +-
cmds/rescue-chunk-recover.c | 2 +-
convert/common.c | 2 +-
disk-io.c | 16 +++++++++-------
disk-io.h | 3 ++-
file-item.c | 2 +-
8 files changed, 18 insertions(+), 15 deletions(-)
diff --git a/btrfs-sb-mod.c b/btrfs-sb-mod.c
index ad143ca0..53700268 100644
--- a/btrfs-sb-mod.c
+++ b/btrfs-sb-mod.c
@@ -36,7 +36,7 @@ static int check_csum_superblock(void *sb)
u8 result[BTRFS_CSUM_SIZE];
u16 csum_type = btrfs_super_csum_type(sb);
- btrfs_csum_data(csum_type, (unsigned char *)sb + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(NULL, csum_type, (unsigned char *)sb + BTRFS_CSUM_SIZE,
result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
return !memcmp(sb, result, csum_size);
@@ -48,7 +48,7 @@ static void update_block_csum(void *block)
struct btrfs_header *hdr;
u16 csum_type = btrfs_super_csum_type(block);
- btrfs_csum_data(csum_type, (unsigned char *)block + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(NULL, csum_type, (unsigned char *)block + BTRFS_CSUM_SIZE,
result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
memset(block, 0, BTRFS_CSUM_SIZE);
diff --git a/check/main.c b/check/main.c
index bb17623f..06f32933 100644
--- a/check/main.c
+++ b/check/main.c
@@ -5741,7 +5741,7 @@ static int check_extent_csums(struct btrfs_root *root, u64 bytenr,
while (data_checked < read_len) {
tmp = offset + data_checked;
- btrfs_csum_data(csum_type, data + tmp,
+ btrfs_csum_data(fs_info, csum_type, data + tmp,
result, fs_info->sectorsize);
csum_offset = leaf_offset +
diff --git a/cmds/inspect-dump-super.c b/cmds/inspect-dump-super.c
index f22633b9..99f35def 100644
--- a/cmds/inspect-dump-super.c
+++ b/cmds/inspect-dump-super.c
@@ -39,7 +39,7 @@ static int check_csum_sblock(void *sb, int csum_size, u16 csum_type)
{
u8 result[BTRFS_CSUM_SIZE];
- btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(NULL, csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
return !memcmp(sb, result, csum_size);
diff --git a/cmds/rescue-chunk-recover.c b/cmds/rescue-chunk-recover.c
index a13acc01..1f26425b 100644
--- a/cmds/rescue-chunk-recover.c
+++ b/cmds/rescue-chunk-recover.c
@@ -1912,7 +1912,7 @@ static int check_one_csum(int fd, u64 start, u32 len, u32 tree_csum,
}
ret = 0;
put_unaligned_le32(tree_csum, expected_csum);
- btrfs_csum_data(csum_type, (u8 *)data, result, len);
+ btrfs_csum_data(NULL, csum_type, (u8 *)data, result, len);
if (memcmp(result, expected_csum, csum_size) != 0)
ret = 1;
out:
diff --git a/convert/common.c b/convert/common.c
index 3cb2d9d4..54ed52b5 100644
--- a/convert/common.c
+++ b/convert/common.c
@@ -66,7 +66,7 @@ static inline int write_temp_super(int fd, struct btrfs_super_block *sb,
u16 csum_type = btrfs_super_csum_type(sb);
int ret;
- btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(NULL, csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
memcpy(&sb->csum[0], result, BTRFS_CSUM_SIZE);
ret = pwrite(fd, sb, BTRFS_SUPER_INFO_SIZE, sb_bytenr);
diff --git a/disk-io.c b/disk-io.c
index 529e8706..5e54a4b3 100644
--- a/disk-io.c
+++ b/disk-io.c
@@ -139,7 +139,8 @@ static void print_tree_block_error(struct btrfs_fs_info *fs_info,
}
}
-int btrfs_csum_data(u16 csum_type, const u8 *data, u8 *out, size_t len)
+int btrfs_csum_data(struct btrfs_fs_info *fs_info, u16 csum_type,
+ const u8 *data, u8 *out, size_t len)
{
memset(out, 0, BTRFS_CSUM_SIZE);
@@ -167,7 +168,8 @@ static int __csum_tree_block_size(struct extent_buffer *buf, u16 csum_size,
u32 len;
len = buf->len - BTRFS_CSUM_SIZE;
- btrfs_csum_data(csum_type, (u8 *)buf->data + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(buf->fs_info, csum_type,
+ (u8 *)buf->data + BTRFS_CSUM_SIZE,
result, len);
if (verify) {
@@ -1411,7 +1413,7 @@ int btrfs_check_super(struct btrfs_super_block *sb, unsigned sbflags)
}
csum_size = btrfs_super_csum_size(sb);
- btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
+ btrfs_csum_data(NULL, csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
if (memcmp(result, sb->csum, csum_size)) {
@@ -1665,8 +1667,8 @@ static int write_dev_supers(struct btrfs_fs_info *fs_info,
}
if (fs_info->super_bytenr != BTRFS_SUPER_INFO_OFFSET) {
btrfs_set_super_bytenr(sb, fs_info->super_bytenr);
- btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE, result,
- BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
+ btrfs_csum_data(fs_info, csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
+ result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
memcpy(&sb->csum[0], result, BTRFS_CSUM_SIZE);
/*
@@ -1700,8 +1702,8 @@ static int write_dev_supers(struct btrfs_fs_info *fs_info,
btrfs_set_super_bytenr(sb, bytenr);
- btrfs_csum_data(csum_type, (u8 *)sb + BTRFS_CSUM_SIZE, result,
- BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
+ btrfs_csum_data(fs_info, csum_type, (u8 *)sb + BTRFS_CSUM_SIZE,
+ result, BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
memcpy(&sb->csum[0], result, BTRFS_CSUM_SIZE);
/*
diff --git a/disk-io.h b/disk-io.h
index b450149e..630d4754 100644
--- a/disk-io.h
+++ b/disk-io.h
@@ -189,7 +189,8 @@ int btrfs_free_fs_root(struct btrfs_root *root);
void btrfs_mark_buffer_dirty(struct extent_buffer *buf);
int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid);
int btrfs_set_buffer_uptodate(struct extent_buffer *buf);
-int btrfs_csum_data(u16 csum_type, const u8 *data, u8 *out, size_t len);
+int btrfs_csum_data(struct btrfs_fs_info *fs_info, u16 csum_type,
+ const u8 *data, u8 *out, size_t len);
int btrfs_open_device(struct btrfs_device *dev);
int csum_tree_block_size(struct extent_buffer *buf, u16 csum_sectorsize,
diff --git a/file-item.c b/file-item.c
index 64af5769..fb84fbd6 100644
--- a/file-item.c
+++ b/file-item.c
@@ -315,7 +315,7 @@ csum:
item = (struct btrfs_csum_item *)((unsigned char *)item +
csum_offset * csum_size);
found:
- btrfs_csum_data(csum_type, (u8 *)data, csum_result, len);
+ btrfs_csum_data(root->fs_info, csum_type, (u8 *)data, csum_result, len);
/* FIXME: does not make sense for non-crc32c */
if (csum_result == 0) {
printk("csum result is 0 for block %llu\n",
--
2.26.1
next prev parent reply other threads:[~2020-05-14 9:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-14 9:34 [PATCH v2 0/5] btrfs-progs: support creating authenticated file-systems Johannes Thumshirn
2020-05-14 9:34 ` Johannes Thumshirn [this message]
2020-05-14 9:34 ` [PATCH v2 2/5] btrfs-progs: add auth_key argument to open_ctree_fs_info Johannes Thumshirn
2020-05-14 9:34 ` [PATCH v2 3/5] btrfs-progs: Add HMAC(SHA256) support Johannes Thumshirn
2020-06-05 8:10 ` Anand Jain
2020-05-14 9:34 ` [PATCH v2 4/5] btrfs-progs: add --auth-key to dump-super Johannes Thumshirn
2020-05-14 9:34 ` [PATCH v2 5/5] btrfs-progs: add auth key to check Johannes Thumshirn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200514093433.6818-2-jth@kernel.org \
--to=jth@kernel.org \
--cc=dsterba@suse.cz \
--cc=johannes.thumshirn@wdc.com \
--cc=jthumshirn@suse.de \
--cc=linux-btrfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.