thin-provisioning-tools/era/era_detail.h

49 lines
1.1 KiB
C
Raw Normal View History

2013-11-19 15:54:31 +05:30
#ifndef ERA_DETAIL_H
#define ERA_DETAIL_H
#include "base/endian_utils.h"
2014-01-15 05:29:12 +05:30
#include "persistent-data/transaction_manager.h"
2013-11-19 15:54:31 +05:30
//----------------------------------------------------------------
namespace era {
struct era_detail_disk {
2014-01-08 21:01:42 +05:30
base::le32 nr_blocks;
2013-11-19 15:54:31 +05:30
base::le32 nr_bits;
2014-01-08 21:01:42 +05:30
base::le32 nr_set;
2013-11-19 15:54:31 +05:30
base::le64 bloom_root;
} __attribute__ ((packed));
2013-11-19 15:54:31 +05:30
struct era_detail {
2014-01-08 21:01:42 +05:30
uint32_t nr_blocks;
2013-11-19 15:54:31 +05:30
uint32_t nr_bits;
2014-01-08 21:01:42 +05:30
uint32_t nr_set;
2013-11-19 15:54:31 +05:30
uint32_t hash1;
uint32_t hash2;
uint32_t nr_probes;
uint64_t bloom_root;
};
2014-01-15 05:29:12 +05:30
struct era_detail_ref_counter {
era_detail_ref_counter(persistent_data::transaction_manager::ptr tm);
void inc(persistent_data::block_address b);
void dec(persistent_data::block_address b);
};
2013-11-19 15:54:31 +05:30
struct era_detail_traits {
typedef era_detail_disk disk_type;
typedef era_detail value_type;
2014-01-15 05:29:12 +05:30
typedef era_detail_ref_counter ref_counter;
2013-11-19 15:54:31 +05:30
static void unpack(disk_type const &disk, value_type &value);
static void pack(value_type const &value, disk_type &disk);
};
}
//----------------------------------------------------------------
#endif