26 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_LIB 36 unsigned char *pi_value_without_seed)
53 rc = MD5_Init((MD5_CTX *)&
pi->pimd5c_prev_context);
71 "bvec->ov_buf[%d]=%p, " 72 "bvec->ov_vec.v_count[%d]=%lu",
85 if (pi_value_without_seed !=
NULL) {
90 memcpy((
void *)&context, (
void *)
curr_context,
sizeof(MD5_CTX));
92 rc = MD5_Final(pi_value_without_seed, &context);
95 "pi_value_without_seed=%p" 107 memcpy((
void *)&context, (
void *)
curr_context,
sizeof(MD5_CTX));
117 char seed_str[64] = {
'\0'};
119 seed->pis_obj_id.f_container,
seed->pis_obj_id.f_key,
120 seed->pis_data_unit_offset);
121 rc = MD5_Update(&context, (
unsigned char *)seed_str,
127 " data_unit_offset 0x%" PRIx64 " seed_str %s",
129 seed->pis_obj_id.f_key,
130 seed->pis_data_unit_offset,
136 rc = MD5_Final(
pi->pimd5c_value, &context);
150 switch (
pi->pi_hdr.pih_type) {
173 unsigned char *pi_value_without_seed)
178 switch (
pi->pi_hdr.pih_type) {
184 pi_value_without_seed);
199 switch (
pi->pi_hdr.pih_type) {
217 md5_ctx_pi.pimd5c_value,
218 MD5_DIGEST_LENGTH) == 0) {
224 " data_unit_offset 0x%"PRIx64,
225 seed->pis_obj_id.f_container,
226 seed->pis_obj_id.f_key,
227 seed->pis_data_unit_offset);
241 #undef M0_TRACE_SUBSYSTEM
unsigned char * curr_context[DATA_UNIT_COUNT]
M0_INTERNAL uint64_t m0_calculate_cksum_size(struct m0_generic_pi *pi)
#define M0_LOG(level,...)
int m0_client_calculate_pi(struct m0_generic_pi *pi, struct m0_pi_seed *seed, struct m0_bufvec *bvec, enum m0_pi_calc_flag flag, unsigned char *curr_context, unsigned char *pi_value_without_seed)
unsigned char pimd5c_value[MD5_DIGEST_LENGTH]
#define M0_ERR_INFO(rc, fmt,...)
static struct m0_bufvec bvec
void * m0_alloc(size_t size)
struct m0_pdclust_instance pi
struct m0_pi_hdr pimd5c_hdr
M0_INTERNAL uint64_t max_cksum_size(void)
unsigned char pimd5c_prev_context[sizeof(MD5_CTX)]
bool m0_calc_verify_cksum_one_unit(struct m0_generic_pi *pi, struct m0_pi_seed *seed, struct m0_bufvec *bvec)
M0_INTERNAL int m0_calculate_md5_inc_context(struct m0_md5_inc_context_pi *pi, struct m0_pi_seed *seed, struct m0_bufvec *bvec, enum m0_pi_calc_flag flag, unsigned char *curr_context, unsigned char *pi_value_without_seed)
#define M0_IMPOSSIBLE(fmt,...)