summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bcache.c9
-rw-r--r--bcache.h17
-rw-r--r--bcacheadm.c2
3 files changed, 19 insertions, 9 deletions
diff --git a/bcache.c b/bcache.c
index a032761..55ec08f 100644
--- a/bcache.c
+++ b/bcache.c
@@ -434,7 +434,7 @@ unsigned hatoi_validate(const char *s, const char *msg)
static void do_write_sb(int fd, struct cache_sb *sb)
{
char zeroes[SB_START] = {0};
- size_t bytes = ((void *) bset_bkey_last(sb)) - (void *) sb;
+ size_t bytes = ((void *) __bset_bkey_last(sb)) - (void *) sb;
/* Zero start of disk */
if (pwrite(fd, zeroes, SB_START, 0) != SB_START) {
@@ -805,11 +805,6 @@ void show_super_backingdev(struct cache_sb *sb, bool force_csum)
if (sb->version == BCACHE_SB_VERSION_BDEV) {
first_sector = BDEV_DATA_START_DEFAULT;
} else {
- if (sb->keys == 1 || sb->d[0]) {
- fprintf(stderr,
- "Possible experimental format detected, bailing\n");
- exit(3);
- }
first_sector = sb->data_offset;
}
@@ -823,7 +818,7 @@ void show_super_backingdev(struct cache_sb *sb, bool force_csum)
static void show_cache_member(struct cache_sb *sb, unsigned i)
{
- struct cache_member *m = ((struct cache_member *) sb->d) + i;
+ struct cache_member *m = sb->members + i;
printf("cache.state\t%s\n", cache_state[CACHE_STATE(m)]);
diff --git a/bcache.h b/bcache.h
index d77d0a2..037e6c3 100644
--- a/bcache.h
+++ b/bcache.h
@@ -30,6 +30,21 @@ typedef __s64 s64;
(void) (&_max1 == &_max2); \
_max1 > _max2 ? _max1 : _max2; })
+#define __bkey_idx(_set, _offset) \
+ ((_set)->_data + (_offset))
+
+#define bkey_idx(_set, _offset) \
+ ((typeof(&(_set)->start[0])) __bkey_idx((_set), (_offset)))
+
+#define bkey_next(_k) \
+ ((typeof(_k)) __bkey_idx(_k, (_k)->u64s))
+
+#define __bset_bkey_last(_set) \
+ __bkey_idx((_set), (_set)->keys)
+
+#define bset_bkey_last(_set) \
+ bkey_idx((_set), (_set)->keys)
+
extern const char * const cache_state[];
extern const char * const replacement_policies[];
extern const char * const csum_types[];
@@ -115,7 +130,7 @@ char *device_set_failed(const char *dev_uuid);
#define csum_set(i, type) \
({ \
void *start = ((void *) (i)) + sizeof(uint64_t); \
- void *end = bset_bkey_last(i); \
+ void *end = __bset_bkey_last(i); \
\
bch_checksum(type, start, end - start); \
})
diff --git a/bcacheadm.c b/bcacheadm.c
index d400ed2..9229363 100644
--- a/bcacheadm.c
+++ b/bcacheadm.c
@@ -684,7 +684,7 @@ int bcache_status(NihCommand *command, char *const *args)
for (i = 0; i < seq_sb->nr_in_set; i++) {
char uuid_str[40];
- struct cache_member *m = ((struct cache_member *) seq_sb->d) + i;
+ struct cache_member *m = seq_sb->members + i;
char dev_state[32];
int j;