summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bcache-format.c33
-rw-r--r--util.h8
2 files changed, 22 insertions, 19 deletions
diff --git a/bcache-format.c b/bcache-format.c
index 984d869f..665a309c 100644
--- a/bcache-format.c
+++ b/bcache-format.c
@@ -331,8 +331,8 @@ static void format_v0(void)
sb->offset = SB_SECTOR;
sb->version = BCACHE_SB_VERSION_CDEV_WITH_UUID;
sb->magic = BCACHE_MAGIC;
- sb->block_size = block_size;
- sb->bucket_size = bucket_size;
+ sb->block_size = block_size;
+ sb->bucket_size = bucket_size;
sb->set_uuid = set_uuid;
sb->nr_in_set = darray_size(cache_devices);
@@ -380,10 +380,10 @@ static void format_v1(void)
sb = calloc(1, sizeof(*sb) + sizeof(struct cache_member) *
darray_size(cache_devices));
- sb->offset = SB_SECTOR;
- sb->version = BCACHE_SB_VERSION_CDEV_V3;
+ sb->offset = __cpu_to_le64(SB_SECTOR);
+ sb->version = __cpu_to_le64(BCACHE_SB_VERSION_CDEV_V3);
sb->magic = BCACHE_MAGIC;
- sb->block_size = block_size;
+ sb->block_size = __cpu_to_le16(block_size);
sb->set_uuid = set_uuid;
sb->user_uuid = user_uuid;
sb->nr_in_set = darray_size(cache_devices);
@@ -412,13 +412,13 @@ static void format_v1(void)
(i - cache_devices.item);
uuid_generate(m->uuid.b);
- m->nbuckets = i->nbuckets;
- m->first_bucket = i->first_bucket;
- m->bucket_size = i->bucket_size;
+ m->nbuckets = __cpu_to_le64(i->nbuckets);
+ m->first_bucket = __cpu_to_le16(i->first_bucket);
+ m->bucket_size = __cpu_to_le16(i->bucket_size);
- if (m->nbuckets < 1 << 7)
+ if (__le64_to_cpu(m->nbuckets < 1 << 7))
die("Not enough buckets: %llu, need %u",
- m->nbuckets, 1 << 7);
+ __le64_to_cpu(m->nbuckets), 1 << 7);
SET_CACHE_TIER(m, i->tier);
SET_CACHE_REPLICATION_SET(m, i->replication_set);
@@ -426,7 +426,7 @@ static void format_v1(void)
SET_CACHE_DISCARD(m, discard);
}
- sb->u64s = bch_journal_buckets_offset(sb);
+ sb->u64s = __cpu_to_le16(bch_journal_buckets_offset(sb));
darray_foreach(i, cache_devices) {
char uuid_str[40], set_uuid_str[40];
@@ -435,7 +435,8 @@ static void format_v1(void)
sb->disk_uuid = m->uuid;
sb->nr_this_dev = i - cache_devices.item;
- sb->csum = csum_set(sb, CACHE_SB_CSUM_TYPE(sb));
+ sb->csum = __cpu_to_le64(__csum_set(sb, __le16_to_cpu(sb->u64s),
+ CACHE_SB_CSUM_TYPE(sb)));
uuid_unparse(sb->disk_uuid.b, uuid_str);
uuid_unparse(sb->user_uuid.b, set_uuid_str);
@@ -450,12 +451,12 @@ static void format_v1(void)
"first_bucket: %u\n",
uuid_str, set_uuid_str,
(unsigned) sb->version,
- m->nbuckets,
- sb->block_size,
- m->bucket_size,
+ __le64_to_cpu(m->nbuckets),
+ __le16_to_cpu(sb->block_size),
+ __le16_to_cpu(m->bucket_size),
sb->nr_in_set,
sb->nr_this_dev,
- m->first_bucket);
+ __le16_to_cpu(m->first_bucket));
do_write_sb(i->fd, sb);
}
diff --git a/util.h b/util.h
index 89222665..2af277a1 100644
--- a/util.h
+++ b/util.h
@@ -72,14 +72,16 @@ u64 bch_checksum(unsigned, const void *, size_t);
#define __bset_bkey_last(_set) \
__bkey_idx((_set), (_set)->u64s)
-#define csum_set(i, type) \
+#define __csum_set(i, u64s, type) \
({ \
- void *start = ((void *) (i)) + sizeof(uint64_t); \
- void *end = __bset_bkey_last(i); \
+ const void *start = ((const void *) (i)) + sizeof(u64); \
+ const void *end = __bkey_idx(i, u64s); \
\
bch_checksum(type, start, end - start); \
})
+#define csum_set(i, type) __csum_set(i, (i)->u64s, type)
+
int bcachectl_open(void);
#include <dirent.h>