btrfs: generate lockdep keyset names at compile time
The names in btrfs_lockdep_keysets are generated from a simple pattern using snprintf but we can generate them directly with some macro magic and remove the helpers. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
387824afd7
commit
ab1405aa25
@ -150,40 +150,42 @@ struct async_submit_bio {
|
|||||||
# error
|
# error
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
#define DEFINE_LEVEL(stem, level) \
|
||||||
|
.names[level] = "btrfs-" stem "-0" #level,
|
||||||
|
|
||||||
|
#define DEFINE_NAME(stem) \
|
||||||
|
DEFINE_LEVEL(stem, 0) \
|
||||||
|
DEFINE_LEVEL(stem, 1) \
|
||||||
|
DEFINE_LEVEL(stem, 2) \
|
||||||
|
DEFINE_LEVEL(stem, 3) \
|
||||||
|
DEFINE_LEVEL(stem, 4) \
|
||||||
|
DEFINE_LEVEL(stem, 5) \
|
||||||
|
DEFINE_LEVEL(stem, 6) \
|
||||||
|
DEFINE_LEVEL(stem, 7)
|
||||||
|
|
||||||
static struct btrfs_lockdep_keyset {
|
static struct btrfs_lockdep_keyset {
|
||||||
u64 id; /* root objectid */
|
u64 id; /* root objectid */
|
||||||
const char *name_stem; /* lock name stem */
|
/* Longest entry: btrfs-free-space-00 */
|
||||||
char names[BTRFS_MAX_LEVEL][20];
|
char names[BTRFS_MAX_LEVEL][20];
|
||||||
struct lock_class_key keys[BTRFS_MAX_LEVEL];
|
struct lock_class_key keys[BTRFS_MAX_LEVEL];
|
||||||
} btrfs_lockdep_keysets[] = {
|
} btrfs_lockdep_keysets[] = {
|
||||||
{ .id = BTRFS_ROOT_TREE_OBJECTID, .name_stem = "root" },
|
{ .id = BTRFS_ROOT_TREE_OBJECTID, DEFINE_NAME("root") },
|
||||||
{ .id = BTRFS_EXTENT_TREE_OBJECTID, .name_stem = "extent" },
|
{ .id = BTRFS_EXTENT_TREE_OBJECTID, DEFINE_NAME("extent") },
|
||||||
{ .id = BTRFS_CHUNK_TREE_OBJECTID, .name_stem = "chunk" },
|
{ .id = BTRFS_CHUNK_TREE_OBJECTID, DEFINE_NAME("chunk") },
|
||||||
{ .id = BTRFS_DEV_TREE_OBJECTID, .name_stem = "dev" },
|
{ .id = BTRFS_DEV_TREE_OBJECTID, DEFINE_NAME("dev") },
|
||||||
{ .id = BTRFS_FS_TREE_OBJECTID, .name_stem = "fs" },
|
{ .id = BTRFS_FS_TREE_OBJECTID, DEFINE_NAME("fs") },
|
||||||
{ .id = BTRFS_CSUM_TREE_OBJECTID, .name_stem = "csum" },
|
{ .id = BTRFS_CSUM_TREE_OBJECTID, DEFINE_NAME("csum") },
|
||||||
{ .id = BTRFS_QUOTA_TREE_OBJECTID, .name_stem = "quota" },
|
{ .id = BTRFS_QUOTA_TREE_OBJECTID, DEFINE_NAME("quota") },
|
||||||
{ .id = BTRFS_TREE_LOG_OBJECTID, .name_stem = "log" },
|
{ .id = BTRFS_TREE_LOG_OBJECTID, DEFINE_NAME("log") },
|
||||||
{ .id = BTRFS_TREE_RELOC_OBJECTID, .name_stem = "treloc" },
|
{ .id = BTRFS_TREE_RELOC_OBJECTID, DEFINE_NAME("treloc") },
|
||||||
{ .id = BTRFS_DATA_RELOC_TREE_OBJECTID, .name_stem = "dreloc" },
|
{ .id = BTRFS_DATA_RELOC_TREE_OBJECTID, DEFINE_NAME("dreloc") },
|
||||||
{ .id = BTRFS_UUID_TREE_OBJECTID, .name_stem = "uuid" },
|
{ .id = BTRFS_UUID_TREE_OBJECTID, DEFINE_NAME("uuid") },
|
||||||
{ .id = BTRFS_FREE_SPACE_TREE_OBJECTID, .name_stem = "free-space" },
|
{ .id = BTRFS_FREE_SPACE_TREE_OBJECTID, DEFINE_NAME("free-space") },
|
||||||
{ .id = 0, .name_stem = "tree" },
|
{ .id = 0, DEFINE_NAME("tree") },
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init btrfs_init_lockdep(void)
|
#undef DEFINE_LEVEL
|
||||||
{
|
#undef DEFINE_NAME
|
||||||
int i, j;
|
|
||||||
|
|
||||||
/* initialize lockdep class names */
|
|
||||||
for (i = 0; i < ARRAY_SIZE(btrfs_lockdep_keysets); i++) {
|
|
||||||
struct btrfs_lockdep_keyset *ks = &btrfs_lockdep_keysets[i];
|
|
||||||
|
|
||||||
for (j = 0; j < ARRAY_SIZE(ks->names); j++)
|
|
||||||
snprintf(ks->names[j], sizeof(ks->names[j]),
|
|
||||||
"btrfs-%s-%02d", ks->name_stem, j);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb,
|
void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb,
|
||||||
int level)
|
int level)
|
||||||
|
@ -135,12 +135,9 @@ int __init btrfs_end_io_wq_init(void);
|
|||||||
void __cold btrfs_end_io_wq_exit(void);
|
void __cold btrfs_end_io_wq_exit(void);
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
void btrfs_init_lockdep(void);
|
|
||||||
void btrfs_set_buffer_lockdep_class(u64 objectid,
|
void btrfs_set_buffer_lockdep_class(u64 objectid,
|
||||||
struct extent_buffer *eb, int level);
|
struct extent_buffer *eb, int level);
|
||||||
#else
|
#else
|
||||||
static inline void btrfs_init_lockdep(void)
|
|
||||||
{ }
|
|
||||||
static inline void btrfs_set_buffer_lockdep_class(u64 objectid,
|
static inline void btrfs_set_buffer_lockdep_class(u64 objectid,
|
||||||
struct extent_buffer *eb, int level)
|
struct extent_buffer *eb, int level)
|
||||||
{
|
{
|
||||||
|
@ -2572,8 +2572,6 @@ static int __init init_btrfs_fs(void)
|
|||||||
if (err)
|
if (err)
|
||||||
goto free_end_io_wq;
|
goto free_end_io_wq;
|
||||||
|
|
||||||
btrfs_init_lockdep();
|
|
||||||
|
|
||||||
btrfs_print_mod_info();
|
btrfs_print_mod_info();
|
||||||
|
|
||||||
err = btrfs_run_sanity_tests();
|
err = btrfs_run_sanity_tests();
|
||||||
|
Loading…
Reference in New Issue
Block a user