#include <linux/module.h>
#include <linux/vmalloc.h>
#include <linux/blkdev.h>
#include <linux/string.h>
#include <linux/interrupt.h>
#include <linux/atomic.h>
#include <linux/blk-mq.h>
#define DM_MSG_PREFIX "table"
#define NODE_SIZE L1_CACHE_BYTES
#define KEYS_PER_NODE (NODE_SIZE / sizeof(sector_t))
#define CHILDREN_PER_NODE (KEYS_PER_NODE + 1)
struct mapped_device *md;
unsigned int counts[MAX_DEPTH];
sector_t *index[MAX_DEPTH];
unsigned int num_targets;
unsigned int num_allocated;
struct dm_target *targets;
struct target_type *immutable_target_type;
bool integrity_supported:1;
unsigned integrity_added:1;
struct list_head devices;
void (*event_fn)(void *);
struct dm_md_mempools *mempools;
struct list_head target_callbacks;
static unsigned int int_log(unsigned int n, unsigned int base)
static inline unsigned int get_child(unsigned int n, unsigned int k)
return (n * CHILDREN_PER_NODE) + k;