Motr  M0
pdclust.c File Reference
#include "lib/errno.h"
#include "lib/memory.h"
#include "lib/misc.h"
#include "lib/vec.h"
#include "lib/arith.h"
#include "lib/hash.h"
#include "lib/bob.h"
#include "lib/finject.h"
#include "lib/trace.h"
#include "motr/magic.h"
#include "layout/layout_internal.h"
#include "layout/pdclust.h"
#include "pool/pool.h"
#include "fd/fd_internal.h"
#include "fd/fd.h"
Include dependency graph for pdclust.c:

Go to the source code of this file.

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_LAYOUT
 

Functions

 M0_BOB_DEFINE (static, &pdclust_bob, m0_pdclust_layout)
 
 M0_BOB_DEFINE (static, &pdclust_instance_bob, m0_pdclust_instance)
 
static bool pdclust_allocated_invariant (const struct m0_pdclust_layout *pl)
 
static bool pdclust_invariant (const struct m0_pdclust_layout *pl)
 
static bool pdclust_instance_invariant (const struct m0_pdclust_instance *pi)
 
static int pdclust_register (struct m0_layout_domain *dom, const struct m0_layout_type *lt)
 
static void pdclust_unregister (struct m0_layout_domain *dom, const struct m0_layout_type *lt)
 
static void pdclust_fini (struct m0_ref *ref)
 
static int pdclust_allocate (struct m0_layout_domain *dom, uint64_t lid, struct m0_layout **out)
 
static void pdclust_delete (struct m0_layout *l)
 
static int pdclust_populate (struct m0_pdclust_layout *pl, const struct m0_pdclust_attr *attr, struct m0_layout_enum *le, uint32_t user_count)
 
M0_INTERNAL int m0_pdclust_build (struct m0_layout_domain *dom, uint64_t lid, const struct m0_pdclust_attr *attr, struct m0_layout_enum *le, struct m0_pdclust_layout **out)
 
M0_INTERNAL bool m0_pdclust_attr_check (const struct m0_pdclust_attr *attr)
 
M0_INTERNAL uint32_t m0_pdclust_N (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL uint32_t m0_pdclust_K (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL uint32_t m0_pdclust_S (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL uint32_t m0_pdclust_P (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL uint32_t m0_pdclust_size (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL uint64_t m0_pdclust_unit_size (const struct m0_pdclust_layout *pl)
 
M0_INTERNAL struct m0_pdclust_layoutm0_layout_to_pdl (const struct m0_layout *l)
 
M0_INTERNAL struct m0_layoutm0_pdl_to_layout (struct m0_pdclust_layout *pl)
 
M0_INTERNAL struct m0_pdclust_instancem0_layout_instance_to_pdi (const struct m0_layout_instance *li)
 
static struct m0_pdclust_layoutpi_to_pl (struct m0_pdclust_instance *pi)
 
static struct m0_layout_enumpdclust_instance_to_enum (const struct m0_layout_instance *li)
 
M0_INTERNAL enum m0_pdclust_unit_type m0_pdclust_unit_classify (const struct m0_pdclust_layout *pl, int unit)
 
static m0_bcount_t pdclust_max_recsize (struct m0_layout_domain *dom)
 
static int pdclust_decode (struct m0_layout *l, struct m0_bufvec_cursor *cur, enum m0_layout_xcode_op op, struct m0_be_tx *tx, uint32_t user_count)
 
static int pdclust_encode (struct m0_layout *l, enum m0_layout_xcode_op op, struct m0_be_tx *tx, struct m0_bufvec_cursor *out)
 
static m0_bcount_t pdclust_recsize (const struct m0_layout *l)
 
static uint64_t m_enc (uint64_t width, uint64_t row, uint64_t column)
 
static void m_dec (uint64_t width, uint64_t pos, uint64_t *row, uint64_t *column)
 
static void permute (uint32_t n, uint32_t *k, uint32_t *s, uint32_t *r)
 
static uint64_t permute_column (struct m0_pdclust_instance *pi, uint64_t omega, uint64_t t)
 
M0_INTERNAL void m0_pdclust_instance_map (struct m0_pdclust_instance *pi, const struct m0_pdclust_src_addr *src, struct m0_pdclust_tgt_addr *tgt)
 
M0_INTERNAL void m0_pdclust_instance_inv (struct m0_pdclust_instance *pi, const struct m0_pdclust_tgt_addr *tgt, struct m0_pdclust_src_addr *src)
 
M0_INTERNAL void pdclust_instance_fini (struct m0_layout_instance *li)
 
M0_INTERNAL void m0_pdclust_perm_cache_destroy (struct m0_layout *layout, struct m0_pdclust_instance *pi)
 
M0_INTERNAL int m0_pdclust_perm_cache_build (struct m0_layout *layout, struct m0_pdclust_instance *pi)
 
M0_INTERNAL bool m0_pdclust_is_replicated (struct m0_pdclust_layout *play)
 
static int pdclust_instance_build (struct m0_layout *l, const struct m0_fid *fid, struct m0_layout_instance **out)
 

Variables

static const struct m0_bob_type pdclust_bob
 
static const struct m0_bob_type pdclust_instance_bob
 
M0_INTERNAL const struct m0_pdclust_src_addr M0_PDCLUST_SRC_NULL
 
static const struct m0_layout_ops pdclust_ops
 
static const struct m0_layout_instance_ops pdclust_instance_ops
 
static const struct m0_layout_type_ops pdclust_type_ops
 
struct m0_layout_type m0_pdclust_layout_type