Motr  M0
pargrp_iomap Struct Reference

#include <file_internal.h>

Collaboration diagram for pargrp_iomap:
Collaboration graph

Data Fields

uint64_t pi_magic
 
uint64_t pi_grpid
 
enum pargrp_iomap_state pi_state
 
struct m0_indexvec_varr pi_ivv
 
enum pargrp_iomap_rmwtype pi_rtype
 
struct data_buf *** pi_databufs
 
struct data_buf *** pi_paritybufs
 
const struct pargrp_iomap_opspi_ops
 
struct io_requestpi_ioreq
 
struct m0_indexvec pi_ivec
 
uint32_t pi_max_row
 
uint32_t pi_max_col
 
struct m0_op_iopi_ioo
 
bool pi_trunc_partial
 
bool pi_is_corrupted
 

Detailed Description

Represents a map of io extents in a given parity group. Struct io_request contains as many pargrp_iomap structures as the number of parity groups spanned by io_request::ir_ivec. Typically, the segments from pargrp_iomap::pi_ivec are round_{up/down} to nearest page boundary for respective segments from io_requets::ir_ivec.

Represents a map of io extents in a given parity group. Struct m0_op_io contains as many pargrp_iomap structures as the number of parity groups spanned by m0_op_io::ioo_ext. Typically, the segments from pargrp_iomap::pi_ivec are round_{up/down} to nearest page boundary for respective segments from m0_op_io::ioo_ext.

Definition at line 1506 of file file_internal.h.

Field Documentation

◆ pi_databufs

struct data_buf *** pi_databufs

Data units in a parity group. Unit size should be multiple of PAGE_SIZE. This is basically a matrix with

  • number of rows = Unit_size / PAGE_SIZE and
  • number of columns = N. Each element of matrix is worth PAGE_SIZE; A unit size worth of data holds a contiguous chunk of file data. The file offset grows vertically first and then to the next data unit.

Data units in a parity group. Unit size should be multiple of PAGE_SIZE. This is basically a matrix with

  • number of rows = Unit_size / PAGE_SIZE and
  • number of columns = N. Each element of matrix is worth PAGE_SIZE; A unit size worth of data holds a contiguous chunk of file data. The file offset grows vertically first (by rows) and then to the next data unit (by columns). For example, if the PAGE_SIZE is 4K, and unit size is 16K, for a file/object of 112K length, there will be following bufs, with corresponding offsets:

[0k ][16k ][32k ][48k ][64k ][80k ][96k ] [4k ][20k ][36k ][52k ][68k ][84k ][100k ] [8k ][24k ][40k ][56k ][72k ][88k ][104k ] [12k ][28k ][44k ][60k ][76k ][92k ][108k ]

Definition at line 1541 of file file_internal.h.

◆ pi_grpid

uint64_t pi_grpid

Parity group id.

Definition at line 1511 of file file_internal.h.

◆ pi_ioo

struct m0_op_io* pi_ioo

Backlink to m0_op_io.

Definition at line 394 of file pg.h.

◆ pi_ioreq

struct io_request* pi_ioreq

Backlink to io_request.

Definition at line 1557 of file file_internal.h.

◆ pi_is_corrupted

bool pi_is_corrupted

In case of a replicated layout this indicates whether any of the replicas of this group are corrupted.

Definition at line 405 of file pg.h.

◆ pi_ivec

struct m0_indexvec pi_ivec

Part of m0_op_io::ioo_ext which falls in ::pi_grpid parity group. All segments are in increasing order of file offset. Segment counts in this index vector are multiple of PAGE_SIZE.

Definition at line 340 of file pg.h.

◆ pi_ivv

struct m0_indexvec_varr pi_ivv

Part of io_request::ir_ivec which falls in ::pi_grpid parity group. All segments are in increasing order of file offset. Segment counts in this index vector are multiple of PAGE_SIZE.

Definition at line 1522 of file file_internal.h.

◆ pi_magic

uint64_t pi_magic

Holds M0_T1FS_PGROUP_MAGIC.

Definition at line 1508 of file file_internal.h.

◆ pi_max_col

uint32_t pi_max_col

The maximum col value to use when accessing pi_databufs. This is essentially the number of data units in parity group (N).

Definition at line 378 of file pg.h.

◆ pi_max_row

uint32_t pi_max_row

The maximum row value to use when accessing pi_databufs. This is essentially the unit size in pages.

Definition at line 372 of file pg.h.

◆ pi_ops

const struct pargrp_iomap_ops * pi_ops

Operations vector.

Definition at line 1554 of file file_internal.h.

◆ pi_paritybufs

struct data_buf *** pi_paritybufs

Parity units in a parity group. Unit size should be multiple of PAGE_SIZE. This is a matrix with

  • number of rows = Unit_size / PAGE_SIZE and
  • number of columns = K. Each element of matrix is worth PAGE_SIZE;

Parity units in a parity group. Unit size should be multiple of PAGE_SIZE. Similar to pi_databufs, this is a matrix with

  • number of rows = Unit_size / PAGE_SIZE and
  • number of columns = K. Each element of matrix is worth PAGE_SIZE.

Definition at line 1551 of file file_internal.h.

◆ pi_rtype

enum pargrp_iomap_rmwtype pi_rtype

Type of read approach used only in case of rmw IO. Either read-old or read-rest.

Definition at line 1528 of file file_internal.h.

◆ pi_state

enum pargrp_iomap_state pi_state

State of parity group during IO life-cycle.

Definition at line 1514 of file file_internal.h.

◆ pi_trunc_partial

bool pi_trunc_partial

If Truncate spans partially, parity units will be updated and only corresponding data units are truncated.

Definition at line 400 of file pg.h.


The documentation for this struct was generated from the following files: