27 #undef M0_TRACE_SUBSYSTEM 28 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_FILE 35 #include "lib/vec_xc.h" 72 const uint64_t *csum),
90 .
dt_name =
"crc32-4k+t10-ref-tag",
209 _0C(
di->d_bsize > 0) &&
210 _0C(
di->d_bit_set_nr > 0) &&
212 (
di->d_blks_nr - 1) *
di->d_bsize)) &&
246 for (
i = 0;
i <
di->d_blks_nr;
i++) {
292 const uint64_t *csum),
310 for (
i = 0;
i <
di->d_blks_nr;
i++) {
312 if (!checksum(blk_data,
di->d_bsize,
354 if (cksum[cur_pos] != io_info->
iv_index[
i] +
357 (
int)cksum[cur_pos]);
373 uint64_t *cksum_field)
379 uint64_t *cksum_field)
394 #undef M0_TRACE_SUBSYSTEM
#define M0_LOG(level,...)
static void file_di_none_sum(const struct m0_file *file, const struct m0_indexvec *io_info, const struct m0_bufvec *in_vec, struct m0_bufvec *di_vec)
uint64_t(* do_out_shift)(const struct m0_file *file)
static struct m0_di_type file_di_crc
M0_INTERNAL void * m0_bufvec_cursor_addr(struct m0_bufvec_cursor *cur)
uint64_t(* do_mask)(const struct m0_file *file)
static bool file_di_crc_check(const struct m0_file *file, const struct m0_indexvec *io_info, const struct m0_bufvec *in_vec, const struct m0_bufvec *di_vec)
const struct m0_di_type * do_type
M0_INTERNAL bool m0_crc32_chk(const void *data, uint64_t len, const uint64_t *cksum)
static void file_di_crc_sum(const struct m0_file *file, const struct m0_indexvec *io_info, const struct m0_bufvec *in_vec, struct m0_bufvec *di_vec)
M0_INTERNAL bool m0_bufvec_cursor_move(struct m0_bufvec_cursor *cur, m0_bcount_t count)
static bool file_di_none_check(const struct m0_file *file, const struct m0_indexvec *io_info, const struct m0_bufvec *in_vec, const struct m0_bufvec *di_vec)
static uint64_t file_di_none_mask(const struct m0_file *file)
static void t10_ref_tag_compute(const struct m0_indexvec *io_info, struct di_info *di, struct m0_bufvec *di_vec)
static uint64_t file_di_crc_in_shift(const struct m0_file *file)
M0_INTERNAL void m0_crc32(const void *data, uint64_t len, uint64_t *cksum)
M0_INTERNAL void m0_bufvec_cursor_init(struct m0_bufvec_cursor *cur, const struct m0_bufvec *bvec)
M0_INTERNAL uint32_t m0_no_of_bits_set(uint64_t val)
static void file_di_info_setup(const struct m0_file *file, const struct m0_indexvec *io_info, struct di_info *di)
static const struct m0_di_ops di_ops[M0_DI_NR]
static void md_crc32_cksum_set(void *data, uint64_t len, uint64_t *cksum)
static bool t10_ref_tag_check(const struct m0_indexvec *io_info, struct di_info *di, const struct m0_bufvec *di_vec)
M0_INTERNAL m0_bcount_t m0_vec_count(const struct m0_vec *vec)
uint64_t(* do_in_shift)(const struct m0_file *file)
M0_INTERNAL m0_bcount_t m0_di_size_get(const struct m0_file *file, const m0_bcount_t size)
static bool file_di_invariant(const struct m0_bufvec *in_vec, const struct m0_bufvec *di_vec, const struct m0_indexvec *io_info, const struct di_info *di)
M0_INTERNAL const struct m0_di_ops * m0_di_ops_get(enum m0_di_types di_type)
static bool file_checksum_check(bool(*checksum)(const void *data, m0_bcount_t bsize, const uint64_t *csum), const struct m0_bufvec *in_vec, const struct m0_indexvec *io_info, struct di_info *di, const struct m0_bufvec *di_vec)
#define IS_IN_ARRAY(idx, array)
M0_INTERNAL bool m0_md_di_chk(void *addr, m0_bcount_t nob, uint64_t *cksum_field)
static uint64_t file_di_none_in_shift(const struct m0_file *file)
static uint64_t file_di_crc_out_shift(const struct m0_file *file)
void check(struct workload *w)
static uint64_t file_di_crc_mask(const struct m0_file *file)
M0_INTERNAL void m0_md_di_set(void *addr, m0_bcount_t nob, uint64_t *cksum_field)
static void file_checksum(void(*checksum)(const void *data, m0_bcount_t bsize, uint64_t *csum), const struct m0_bufvec *in_vec, const struct m0_indexvec *io_info, struct di_info *di, struct m0_bufvec *di_vec)
static uint64_t file_di_none_out_shift(const struct m0_file *file)
static bool md_crc32_cksum_check(void *data, uint64_t len, uint64_t *cksum)
static struct m0_di_type file_di_none_type
const struct m0_di_ops * fi_di_ops
static m0_bcount_t current_pos(const struct di_info *info, int i)