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
|
||||
# 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 {
|
||||
u64 id; /* root objectid */
|
||||
const char *name_stem; /* lock name stem */
|
||||
/* Longest entry: btrfs-free-space-00 */
|
||||
char names[BTRFS_MAX_LEVEL][20];
|
||||
struct lock_class_key keys[BTRFS_MAX_LEVEL];
|
||||
} btrfs_lockdep_keysets[] = {
|
||||
{ .id = BTRFS_ROOT_TREE_OBJECTID, .name_stem = "root" },
|
||||
{ .id = BTRFS_EXTENT_TREE_OBJECTID, .name_stem = "extent" },
|
||||
{ .id = BTRFS_CHUNK_TREE_OBJECTID, .name_stem = "chunk" },
|
||||
{ .id = BTRFS_DEV_TREE_OBJECTID, .name_stem = "dev" },
|
||||
{ .id = BTRFS_FS_TREE_OBJECTID, .name_stem = "fs" },
|
||||
{ .id = BTRFS_CSUM_TREE_OBJECTID, .name_stem = "csum" },
|
||||
{ .id = BTRFS_QUOTA_TREE_OBJECTID, .name_stem = "quota" },
|
||||
{ .id = BTRFS_TREE_LOG_OBJECTID, .name_stem = "log" },
|
||||
{ .id = BTRFS_TREE_RELOC_OBJECTID, .name_stem = "treloc" },
|
||||
{ .id = BTRFS_DATA_RELOC_TREE_OBJECTID, .name_stem = "dreloc" },
|
||||
{ .id = BTRFS_UUID_TREE_OBJECTID, .name_stem = "uuid" },
|
||||
{ .id = BTRFS_FREE_SPACE_TREE_OBJECTID, .name_stem = "free-space" },
|
||||
{ .id = 0, .name_stem = "tree" },
|
||||
{ .id = BTRFS_ROOT_TREE_OBJECTID, DEFINE_NAME("root") },
|
||||
{ .id = BTRFS_EXTENT_TREE_OBJECTID, DEFINE_NAME("extent") },
|
||||
{ .id = BTRFS_CHUNK_TREE_OBJECTID, DEFINE_NAME("chunk") },
|
||||
{ .id = BTRFS_DEV_TREE_OBJECTID, DEFINE_NAME("dev") },
|
||||
{ .id = BTRFS_FS_TREE_OBJECTID, DEFINE_NAME("fs") },
|
||||
{ .id = BTRFS_CSUM_TREE_OBJECTID, DEFINE_NAME("csum") },
|
||||
{ .id = BTRFS_QUOTA_TREE_OBJECTID, DEFINE_NAME("quota") },
|
||||
{ .id = BTRFS_TREE_LOG_OBJECTID, DEFINE_NAME("log") },
|
||||
{ .id = BTRFS_TREE_RELOC_OBJECTID, DEFINE_NAME("treloc") },
|
||||
{ .id = BTRFS_DATA_RELOC_TREE_OBJECTID, DEFINE_NAME("dreloc") },
|
||||
{ .id = BTRFS_UUID_TREE_OBJECTID, DEFINE_NAME("uuid") },
|
||||
{ .id = BTRFS_FREE_SPACE_TREE_OBJECTID, DEFINE_NAME("free-space") },
|
||||
{ .id = 0, DEFINE_NAME("tree") },
|
||||
};
|
||||
|
||||
void __init btrfs_init_lockdep(void)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
#undef DEFINE_LEVEL
|
||||
#undef DEFINE_NAME
|
||||
|
||||
void btrfs_set_buffer_lockdep_class(u64 objectid, struct extent_buffer *eb,
|
||||
int level)
|
||||
|
@ -135,12 +135,9 @@ int __init btrfs_end_io_wq_init(void);
|
||||
void __cold btrfs_end_io_wq_exit(void);
|
||||
|
||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||
void btrfs_init_lockdep(void);
|
||||
void btrfs_set_buffer_lockdep_class(u64 objectid,
|
||||
struct extent_buffer *eb, int level);
|
||||
#else
|
||||
static inline void btrfs_init_lockdep(void)
|
||||
{ }
|
||||
static inline void btrfs_set_buffer_lockdep_class(u64 objectid,
|
||||
struct extent_buffer *eb, int level)
|
||||
{
|
||||
|
@ -2572,8 +2572,6 @@ static int __init init_btrfs_fs(void)
|
||||
if (err)
|
||||
goto free_end_io_wq;
|
||||
|
||||
btrfs_init_lockdep();
|
||||
|
||||
btrfs_print_mod_info();
|
||||
|
||||
err = btrfs_run_sanity_tests();
|
||||
|
Loading…
Reference in New Issue
Block a user