Motr  M0
tx_bulk.c File Reference
#include "lib/trace.h"
#include "be/tx_bulk.h"
#include "lib/mutex.h"
#include "lib/memory.h"
#include "lib/errno.h"
#include "lib/atomic.h"
#include "be/ut/helper.h"
#include "be/op.h"
#include "be/queue.h"
#include "ut/ut.h"
#include "ut/threads.h"
Include dependency graph for tx_bulk.c:

Go to the source code of this file.

Data Structures

struct  be_ut_tx_bulk_be_ctx
 
struct  be_ut_tx_bulk_be_cfg
 
struct  be_ut_tx_bulk_usecase
 
struct  be_ut_tx_bulk_state
 
struct  be_ut_tx_bulk_parallel_ctx
 
struct  be_ut_tx_bulk_parallel_thread_param
 
struct  be_ut_tx_bulk_parallel_work_item
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_UT
 

Enumerations

enum  { BE_UT_TX_BULK_Q_SIZE_MAX = 0x100, BE_UT_TX_BULK_SEG_SIZE = 1UL << 26, BE_UT_TX_BULK_TX_SIZE_MAX_BP = 2000, BE_UT_TX_BULK_WORKERS = 0x40 }
 
enum  { BE_UT_TX_BULK_USECASE_ALLOC = 1UL << 16 }
 
enum  {
  BE_UT_TX_BULK_TX_NR_EMPTY = 0x1000, BE_UT_TX_BULK_TX_NR_ERROR = 0x10000, BE_UT_TX_BULK_TX_NR_LARGE_TX = 0x40, BE_UT_TX_BULK_TX_NR_LARGE_PAYLOAD = 0x100,
  BE_UT_TX_BULK_TX_NR_LARGE_ALL = 0x40, BE_UT_TX_BULK_TX_NR_SMALL_TX = 0x1000, BE_UT_TX_BULK_TX_NR_MEDIUM_TX = 0x1000, BE_UT_TX_BULK_TX_NR_LARGE_CRED = 0x1000,
  BE_UT_TX_BULK_TX_NR_MEDIUM_CRED = 0x1000, BE_UT_TX_BULK_BUF_NR = 0x30, BE_UT_TX_BULK_BUF_SIZE = 0x100000
}
 
enum  {
  BE_UT_TX_BULK_FILL_NOTHING = 0, BE_UT_TX_BULK_FILL_TX = 1 << 1, BE_UT_TX_BULK_FILL_PAYLOAD = 1 << 2, BE_UT_TX_BULK_ERROR_REG = 1 << 3,
  BE_UT_TX_BULK_ERROR_PAYLOAD = 1 << 4
}
 
enum  {
  BE_UT_TX_BULK_PARALLEL_THREADS_NR = 0x10, BE_UT_TX_BULK_PARALLEL_QUEUE_SIZE_MAX = 4, BE_UT_TX_BULK_PARALLEL_PARTITIONS_NR_MAX = 15, BE_UT_TX_BULK_PARALLEL_WORKERS_NR_MAX = 15,
  BE_UT_TX_BULK_PARALLEL_ALLOC = 0x10000, BE_UT_TX_BULK_PARALLEL_Q_SIZE_MAX = 0x10, BE_UT_TX_BULK_PARALLEL_ITEMS_PER_PARTITION = 31, BE_UT_TX_BULK_PARALLEL_ITEMS_PER_TX_MAX = 3
}
 

Functions

static void be_ut_tx_bulk_test_init (struct be_ut_tx_bulk_be_ctx **be_ctx_out, struct be_ut_tx_bulk_be_cfg *be_cfg, void(*test_prepare)(struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr), void *ptr)
 
static void be_ut_tx_bulk_test_fini (struct be_ut_tx_bulk_be_ctx *be_ctx)
 
static void be_ut_tx_bulk_test_run (struct be_ut_tx_bulk_be_ctx *be_ctx, struct m0_be_tx_bulk_cfg *tb_cfg, void(*test_work_put)(struct m0_be_tx_bulk *tb, bool success, void *ptr), void *ptr, bool success)
 
static void be_ut_tx_bulk_usecase_work_put (struct m0_be_tx_bulk *tb, bool success, void *ptr)
 
static void be_ut_tx_bulk_usecase_do (struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_usecase_done (struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_usecase_test_prepare (struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
 
void m0_be_ut_tx_bulk_usecase (void)
 
static void be_ut_tx_bulk_state_calc (struct be_ut_tx_bulk_state *tbs, bool calc_cred, struct m0_be_tx_credit *cred, m0_bcount_t *cred_payload)
 
static void be_ut_tx_bulk_state_work_put (struct m0_be_tx_bulk *tb, bool success, void *ptr)
 
static void be_ut_tx_bulk_state_do (struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_state_done (struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_state_test_prepare (struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
 
static void be_ut_tx_bulk_state_test_run (struct be_ut_tx_bulk_state *tbs, struct be_ut_tx_bulk_be_cfg *be_cfg, bool success)
 
void m0_be_ut_tx_bulk_empty (void)
 
void m0_be_ut_tx_bulk_error_reg (void)
 
void m0_be_ut_tx_bulk_error_payload (void)
 
void m0_be_ut_tx_bulk_large_tx (void)
 
void m0_be_ut_tx_bulk_large_payload (void)
 
void m0_be_ut_tx_bulk_large_all (void)
 
void m0_be_ut_tx_bulk_small_tx (void)
 
void m0_be_ut_tx_bulk_medium_tx (void)
 
void m0_be_ut_tx_bulk_medium_tx_multi (void)
 
void m0_be_ut_tx_bulk_medium_cred (void)
 
void m0_be_ut_tx_bulk_large_cred (void)
 
static void be_ut_tx_bulk_parallel_test_prepare (struct m0_be_ut_backend *ut_be, struct m0_be_ut_seg *ut_seg, void *ptr)
 
static void be_ut_tx_bulk_parallel_work_put (struct m0_be_tx_bulk *tb, bool success, void *ptr)
 
static void be_ut_tx_bulk_parallel_do (struct m0_be_tx_bulk *tb, struct m0_be_tx *tx, struct m0_be_op *op, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_parallel_done (struct m0_be_tx_bulk *tb, void *datum, void *user, uint64_t worker_index, uint64_t partition)
 
static void be_ut_tx_bulk_parallel_thread (void *_param)
 
void m0_be_ut_tx_bulk_parallel_1_15 (void)