mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
bcachefs: split out sb-members_format.h
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
f1d4fed13f
commit
016c22e410
@ -513,6 +513,7 @@ struct bch_sb_field {
|
||||
#include "snapshot_format.h"
|
||||
#include "subvolume_format.h"
|
||||
#include "sb-counters_format.h"
|
||||
#include "sb-members_format.h"
|
||||
|
||||
enum bch_sb_field_type {
|
||||
#define x(f, nr) BCH_SB_FIELD_##f = nr,
|
||||
@ -545,106 +546,6 @@ struct bch_sb_field_journal_v2 {
|
||||
} d[];
|
||||
};
|
||||
|
||||
/* BCH_SB_FIELD_members_v1: */
|
||||
|
||||
#define BCH_MIN_NR_NBUCKETS (1 << 6)
|
||||
|
||||
#define BCH_IOPS_MEASUREMENTS() \
|
||||
x(seqread, 0) \
|
||||
x(seqwrite, 1) \
|
||||
x(randread, 2) \
|
||||
x(randwrite, 3)
|
||||
|
||||
enum bch_iops_measurement {
|
||||
#define x(t, n) BCH_IOPS_##t = n,
|
||||
BCH_IOPS_MEASUREMENTS()
|
||||
#undef x
|
||||
BCH_IOPS_NR
|
||||
};
|
||||
|
||||
#define BCH_MEMBER_ERROR_TYPES() \
|
||||
x(read, 0) \
|
||||
x(write, 1) \
|
||||
x(checksum, 2)
|
||||
|
||||
enum bch_member_error_type {
|
||||
#define x(t, n) BCH_MEMBER_ERROR_##t = n,
|
||||
BCH_MEMBER_ERROR_TYPES()
|
||||
#undef x
|
||||
BCH_MEMBER_ERROR_NR
|
||||
};
|
||||
|
||||
struct bch_member {
|
||||
__uuid_t uuid;
|
||||
__le64 nbuckets; /* device size */
|
||||
__le16 first_bucket; /* index of first bucket used */
|
||||
__le16 bucket_size; /* sectors */
|
||||
__u8 btree_bitmap_shift;
|
||||
__u8 pad[3];
|
||||
__le64 last_mount; /* time_t */
|
||||
|
||||
__le64 flags;
|
||||
__le32 iops[4];
|
||||
__le64 errors[BCH_MEMBER_ERROR_NR];
|
||||
__le64 errors_at_reset[BCH_MEMBER_ERROR_NR];
|
||||
__le64 errors_reset_time;
|
||||
__le64 seq;
|
||||
__le64 btree_allocated_bitmap;
|
||||
/*
|
||||
* On recovery from a clean shutdown we don't normally read the journal,
|
||||
* but we still want to resume writing from where we left off so we
|
||||
* don't overwrite more than is necessary, for list journal debugging:
|
||||
*/
|
||||
__le32 last_journal_bucket;
|
||||
__le32 last_journal_bucket_offset;
|
||||
};
|
||||
|
||||
/*
|
||||
* This limit comes from the bucket_gens array - it's a single allocation, and
|
||||
* kernel allocation are limited to INT_MAX
|
||||
*/
|
||||
#define BCH_MEMBER_NBUCKETS_MAX (INT_MAX - 64)
|
||||
|
||||
#define BCH_MEMBER_V1_BYTES 56
|
||||
|
||||
LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags, 0, 4)
|
||||
/* 4-14 unused, was TIER, HAS_(META)DATA, REPLACEMENT */
|
||||
LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags, 14, 15)
|
||||
LE64_BITMASK(BCH_MEMBER_DATA_ALLOWED, struct bch_member, flags, 15, 20)
|
||||
LE64_BITMASK(BCH_MEMBER_GROUP, struct bch_member, flags, 20, 28)
|
||||
LE64_BITMASK(BCH_MEMBER_DURABILITY, struct bch_member, flags, 28, 30)
|
||||
LE64_BITMASK(BCH_MEMBER_FREESPACE_INITIALIZED,
|
||||
struct bch_member, flags, 30, 31)
|
||||
|
||||
#if 0
|
||||
LE64_BITMASK(BCH_MEMBER_NR_READ_ERRORS, struct bch_member, flags[1], 0, 20);
|
||||
LE64_BITMASK(BCH_MEMBER_NR_WRITE_ERRORS,struct bch_member, flags[1], 20, 40);
|
||||
#endif
|
||||
|
||||
#define BCH_MEMBER_STATES() \
|
||||
x(rw, 0) \
|
||||
x(ro, 1) \
|
||||
x(failed, 2) \
|
||||
x(spare, 3)
|
||||
|
||||
enum bch_member_state {
|
||||
#define x(t, n) BCH_MEMBER_STATE_##t = n,
|
||||
BCH_MEMBER_STATES()
|
||||
#undef x
|
||||
BCH_MEMBER_STATE_NR
|
||||
};
|
||||
|
||||
struct bch_sb_field_members_v1 {
|
||||
struct bch_sb_field field;
|
||||
struct bch_member _members[]; //Members are now variable size
|
||||
};
|
||||
|
||||
struct bch_sb_field_members_v2 {
|
||||
struct bch_sb_field field;
|
||||
__le16 member_bytes; //size of single member entry
|
||||
u8 pad[6];
|
||||
struct bch_member _members[];
|
||||
};
|
||||
|
||||
/* BCH_SB_FIELD_crypt: */
|
||||
|
||||
@ -909,7 +810,6 @@ unsigned bcachefs_metadata_required_upgrade_below = bcachefs_metadata_version_re
|
||||
#define bcachefs_metadata_version_current (bcachefs_metadata_version_max - 1)
|
||||
|
||||
#define BCH_SB_SECTOR 8
|
||||
#define BCH_SB_MEMBERS_MAX 64 /* XXX kill */
|
||||
|
||||
#define BCH_SB_LAYOUT_SIZE_BITS_MAX 16 /* 32 MB */
|
||||
|
||||
|
110
fs/bcachefs/sb-members_format.h
Normal file
110
fs/bcachefs/sb-members_format.h
Normal file
@ -0,0 +1,110 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _BCACHEFS_SB_MEMBERS_FORMAT_H
|
||||
#define _BCACHEFS_SB_MEMBERS_FORMAT_H
|
||||
|
||||
/*
|
||||
* We refer to members with bitmasks in various places - but we need to get rid
|
||||
* of this limit:
|
||||
*/
|
||||
#define BCH_SB_MEMBERS_MAX 64
|
||||
|
||||
#define BCH_MIN_NR_NBUCKETS (1 << 6)
|
||||
|
||||
#define BCH_IOPS_MEASUREMENTS() \
|
||||
x(seqread, 0) \
|
||||
x(seqwrite, 1) \
|
||||
x(randread, 2) \
|
||||
x(randwrite, 3)
|
||||
|
||||
enum bch_iops_measurement {
|
||||
#define x(t, n) BCH_IOPS_##t = n,
|
||||
BCH_IOPS_MEASUREMENTS()
|
||||
#undef x
|
||||
BCH_IOPS_NR
|
||||
};
|
||||
|
||||
#define BCH_MEMBER_ERROR_TYPES() \
|
||||
x(read, 0) \
|
||||
x(write, 1) \
|
||||
x(checksum, 2)
|
||||
|
||||
enum bch_member_error_type {
|
||||
#define x(t, n) BCH_MEMBER_ERROR_##t = n,
|
||||
BCH_MEMBER_ERROR_TYPES()
|
||||
#undef x
|
||||
BCH_MEMBER_ERROR_NR
|
||||
};
|
||||
|
||||
struct bch_member {
|
||||
__uuid_t uuid;
|
||||
__le64 nbuckets; /* device size */
|
||||
__le16 first_bucket; /* index of first bucket used */
|
||||
__le16 bucket_size; /* sectors */
|
||||
__u8 btree_bitmap_shift;
|
||||
__u8 pad[3];
|
||||
__le64 last_mount; /* time_t */
|
||||
|
||||
__le64 flags;
|
||||
__le32 iops[4];
|
||||
__le64 errors[BCH_MEMBER_ERROR_NR];
|
||||
__le64 errors_at_reset[BCH_MEMBER_ERROR_NR];
|
||||
__le64 errors_reset_time;
|
||||
__le64 seq;
|
||||
__le64 btree_allocated_bitmap;
|
||||
/*
|
||||
* On recovery from a clean shutdown we don't normally read the journal,
|
||||
* but we still want to resume writing from where we left off so we
|
||||
* don't overwrite more than is necessary, for list journal debugging:
|
||||
*/
|
||||
__le32 last_journal_bucket;
|
||||
__le32 last_journal_bucket_offset;
|
||||
};
|
||||
|
||||
/*
|
||||
* This limit comes from the bucket_gens array - it's a single allocation, and
|
||||
* kernel allocation are limited to INT_MAX
|
||||
*/
|
||||
#define BCH_MEMBER_NBUCKETS_MAX (INT_MAX - 64)
|
||||
|
||||
#define BCH_MEMBER_V1_BYTES 56
|
||||
|
||||
LE64_BITMASK(BCH_MEMBER_STATE, struct bch_member, flags, 0, 4)
|
||||
/* 4-14 unused, was TIER, HAS_(META)DATA, REPLACEMENT */
|
||||
LE64_BITMASK(BCH_MEMBER_DISCARD, struct bch_member, flags, 14, 15)
|
||||
LE64_BITMASK(BCH_MEMBER_DATA_ALLOWED, struct bch_member, flags, 15, 20)
|
||||
LE64_BITMASK(BCH_MEMBER_GROUP, struct bch_member, flags, 20, 28)
|
||||
LE64_BITMASK(BCH_MEMBER_DURABILITY, struct bch_member, flags, 28, 30)
|
||||
LE64_BITMASK(BCH_MEMBER_FREESPACE_INITIALIZED,
|
||||
struct bch_member, flags, 30, 31)
|
||||
|
||||
#if 0
|
||||
LE64_BITMASK(BCH_MEMBER_NR_READ_ERRORS, struct bch_member, flags[1], 0, 20);
|
||||
LE64_BITMASK(BCH_MEMBER_NR_WRITE_ERRORS,struct bch_member, flags[1], 20, 40);
|
||||
#endif
|
||||
|
||||
#define BCH_MEMBER_STATES() \
|
||||
x(rw, 0) \
|
||||
x(ro, 1) \
|
||||
x(failed, 2) \
|
||||
x(spare, 3)
|
||||
|
||||
enum bch_member_state {
|
||||
#define x(t, n) BCH_MEMBER_STATE_##t = n,
|
||||
BCH_MEMBER_STATES()
|
||||
#undef x
|
||||
BCH_MEMBER_STATE_NR
|
||||
};
|
||||
|
||||
struct bch_sb_field_members_v1 {
|
||||
struct bch_sb_field field;
|
||||
struct bch_member _members[]; //Members are now variable size
|
||||
};
|
||||
|
||||
struct bch_sb_field_members_v2 {
|
||||
struct bch_sb_field field;
|
||||
__le16 member_bytes; //size of single member entry
|
||||
u8 pad[6];
|
||||
struct bch_member _members[];
|
||||
};
|
||||
|
||||
#endif /* _BCACHEFS_SB_MEMBERS_FORMAT_H */
|
Loading…
Reference in New Issue
Block a user