2020-02-23 02:11:43 +03:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "object_id.h"
|
|
|
|
#include "osd_id.h"
|
|
|
|
|
|
|
|
#ifndef MEM_ALIGNMENT
|
|
|
|
#define MEM_ALIGNMENT 512
|
|
|
|
#endif
|
|
|
|
|
|
|
|
struct buf_len_t
|
|
|
|
{
|
|
|
|
void *buf;
|
|
|
|
uint64_t len;
|
|
|
|
};
|
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
struct osd_rmw_stripe_t
|
2020-02-23 02:11:43 +03:00
|
|
|
{
|
|
|
|
void *read_buf, *write_buf;
|
|
|
|
uint32_t req_start, req_end;
|
|
|
|
uint32_t read_start, read_end;
|
|
|
|
uint32_t write_start, write_end;
|
|
|
|
bool missing;
|
|
|
|
};
|
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
void split_stripes(uint64_t pg_minsize, uint32_t bs_block_size, uint32_t start, uint32_t len, osd_rmw_stripe_t *stripes);
|
2020-02-23 02:11:43 +03:00
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
void reconstruct_stripe(osd_rmw_stripe_t *stripes, int pg_size, int role);
|
2020-02-23 02:11:43 +03:00
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
int extend_missing_stripes(osd_rmw_stripe_t *stripes, osd_num_t *osd_set, int minsize, int size);
|
2020-02-23 02:11:43 +03:00
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
void* alloc_read_buffer(osd_rmw_stripe_t *stripes, int read_pg_size, uint64_t add_size);
|
2020-02-23 02:11:43 +03:00
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
void* calc_rmw_reads(void *write_buf, osd_rmw_stripe_t *stripes, uint64_t *osd_set, uint64_t pg_size, uint64_t pg_minsize, uint64_t pg_cursize);
|
2020-02-23 02:11:43 +03:00
|
|
|
|
2020-02-23 22:52:49 +03:00
|
|
|
void calc_rmw_parity(osd_rmw_stripe_t *stripes, int pg_size);
|