Skip to content
This repository has been archived by the owner on Jul 4, 2022. It is now read-only.

Commit

Permalink
EOS-13990: NFS ADDB: Tracepointsfor all ATTR operations (#22)
Browse files Browse the repository at this point in the history
Signed-off-by: vimalraghwani20 <vimal.raghwani@seagate.com>
  • Loading branch information
vimalraghwani20 committed Oct 20, 2020
1 parent 7158949 commit f173b7d
Show file tree
Hide file tree
Showing 3 changed files with 205 additions and 42 deletions.
41 changes: 39 additions & 2 deletions src/common/motr/m0common.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "lib/thread.h"
#include "m0common.h"
#include <motr/helpers/helpers.h>
#include "operation.h"

/* Key Iterator */

Expand All @@ -67,18 +68,28 @@ void m0_key_iter_fini(struct kvstore_iter *iter)
{
struct m0_key_iter_priv *priv = m0_key_iter_priv(iter);

perfc_trace_inii(PFT_M0_KEY_ITER_FINISH, PEM_NFS_TO_MOTR);
if (!priv->initialized)
goto out;

m0_bufvec_free(&priv->key);
m0_bufvec_free(&priv->val);

if (priv->op) {
perfc_trace_attr(PEA_M0_OP_SM_ID, priv->op->op_sm.sm_id);
perfc_trace_attr(PEA_M0_OP_SM_STATE, priv->op->op_sm.sm_state);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_FINISH);
m0_op_fini(priv->op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_FINISH);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_FREE);
m0_op_free(priv->op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_FREE);
}

out:
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);
return;
}

Expand All @@ -92,6 +103,7 @@ bool m0_key_iter_find(struct kvstore_iter *iter, const void* prefix,
struct m0_idx *index = iter->idx.index_priv;
int rc;

perfc_trace_inii(PFT_M0_KEY_ITER_FIND, PEM_NFS_TO_MOTR);
if (prefix_len == 0)
rc = m0_bufvec_empty_alloc(key, 1);
else
Expand All @@ -107,17 +119,26 @@ bool m0_key_iter_find(struct kvstore_iter *iter, const void* prefix,

memcpy(priv->key.ov_buf[0], prefix, prefix_len);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_IDX_OP);
rc = m0_idx_op(index, M0_IC_NEXT, &priv->key, &priv->val,
priv->rcs, 0, op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_IDX_OP);

if (rc != 0) {
goto out_free_val;
}


perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_LAUNCH);
m0_op_launch(op, 1);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_LAUNCH);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_WAIT);
rc = m0_op_wait(*op, M0_BITS(M0_OS_STABLE),
M0_TIME_NEVER);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_WAIT);

perfc_trace_attr(PEA_M0_OP_SM_ID, (*op)->op_sm.sm_id);
perfc_trace_attr(PEA_M0_OP_SM_STATE, (*op)->op_sm.sm_state);

if (rc != 0) {
goto out_free_op;
Expand All @@ -135,8 +156,13 @@ bool m0_key_iter_find(struct kvstore_iter *iter, const void* prefix,

out_free_op:
if (op && *op) {
perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_FINISH);
m0_op_fini(*op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_FINISH);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_FREE);
m0_op_free(*op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_FREE);
}

out_free_val:
Expand All @@ -151,7 +177,7 @@ bool m0_key_iter_find(struct kvstore_iter *iter, const void* prefix,
}

iter->inner_rc = rc;

perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);
return rc == 0;
}

Expand All @@ -177,23 +203,33 @@ bool m0_key_iter_next(struct kvstore_iter *iter)
struct m0_idx *index = iter->idx.index_priv;
bool can_get_next = false;

perfc_trace_inii(PFT_M0_KEY_ITER_NEXT, PEM_NFS_TO_MOTR);
assert(priv->initialized);

/* Motr API: "'vals' vector ... should contain NULLs" */
m0_bufvec_free_data(&priv->val);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_IDX_OP);
iter->inner_rc = m0_idx_op(index, M0_IC_NEXT,
&priv->key, &priv->val, priv->rcs,
M0_OIF_EXCLUDE_START_KEY, &priv->op);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_IDX_OP);

if (iter->inner_rc != 0) {
goto out;
}

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_LAUNCH);
m0_op_launch(&priv->op, 1);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_LAUNCH);

perfc_trace_attr(PEA_TIME_ATTR_START_M0_OP_WAIT);
iter->inner_rc = m0_op_wait(priv->op, M0_BITS(M0_OS_STABLE),
M0_TIME_NEVER);
perfc_trace_attr(PEA_TIME_ATTR_END_M0_OP_WAIT);

perfc_trace_attr(PEA_M0_OP_SM_ID, priv->op->op_sm.sm_id);
perfc_trace_attr(PEA_M0_OP_SM_STATE, priv->op->op_sm.sm_state);
if (iter->inner_rc != 0) {
goto out;
}
Expand All @@ -204,6 +240,7 @@ bool m0_key_iter_next(struct kvstore_iter *iter)
can_get_next = true;

out:
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);
return can_get_next;
}

Expand Down
79 changes: 66 additions & 13 deletions src/kvstore/kvstore_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ struct kvstore *kvstore_get(void)
return &g_kvstore;
}

int kvs_init(struct kvstore *kvstore, struct collection_item *cfg)

static inline int __kvs_init(struct kvstore *kvstore,
struct collection_item *cfg)
{
int rc = 0, i;
char *kvstore_type = NULL;
Expand Down Expand Up @@ -93,19 +93,46 @@ int kvs_init(struct kvstore *kvstore, struct collection_item *cfg)
return rc;
}

int kvs_fini(struct kvstore *kvstore)
int kvs_init(struct kvstore *kvstore, struct collection_item *cfg)
{
int rc;

perfc_trace_inii(PFT_KVS_INIT, PEM_KVS_TO_NFS);

rc = __kvs_init(kvstore, cfg);

perfc_trace_attr(PEA_KVS_RES_RC, rc);
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);

return rc;
}
static inline int __kvs_fini(struct kvstore *kvstore)
{
dassert(kvstore && kvstore->kvstore_ops && kvstore->kvstore_ops->fini);

return kvstore->kvstore_ops->fini();
}

int kvs_fini(struct kvstore *kvstore)
{
int rc;

perfc_trace_inii(PFT_KVS_FINI, PEM_KVS_TO_NFS);

rc = __kvs_fini(kvstore);

perfc_trace_attr(PEA_KVS_RES_RC, rc);
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);

return rc;
}

int kvs_fid_from_str(const char *fid_str, kvs_idx_fid_t *out_fid)
{
return cortx_kvs_fid_from_str(fid_str, out_fid);
}

static int __kvs_alloc(struct kvstore *kvstore, void **ptr, size_t size)
static inline int __kvs_alloc(struct kvstore *kvstore, void **ptr, size_t size)
{
dassert(kvstore);
return kvstore->kvstore_ops->alloc(ptr, size);
Expand All @@ -120,18 +147,27 @@ int kvs_alloc(struct kvstore *kvstore, void **ptr, size_t size)

rc = __kvs_alloc(kvstore, ptr, size);

perfc_trace_attr(PEA_KVS_ALLOC_RES_RC, rc);
perfc_trace_attr(PEA_KVS_RES_RC, rc);
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);

return rc;
}

void kvs_free(struct kvstore *kvstore, void *ptr)
static inline void __kvs_free(struct kvstore *kvstore, void *ptr)
{
dassert(kvstore);
return kvstore->kvstore_ops->free(ptr);
}

void kvs_free(struct kvstore *kvstore, void *ptr)
{
perfc_trace_inii(PFT_KVS_FREE, PEM_KVS_TO_NFS);

__kvs_free(kvstore, ptr);

perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);
}

int kvs_begin_transaction(struct kvstore *kvstore, struct kvs_idx *index)
{
dassert(kvstore);
Expand Down Expand Up @@ -176,8 +212,8 @@ int kvs_index_close(struct kvstore *kvstore, struct kvs_idx *index)
return kvstore->kvstore_ops->index_close(index);
}

static int __kvs_get(struct kvstore *kvstore, struct kvs_idx *index, void *k,
const size_t klen, void **v, size_t *vlen)
static inline int __kvs_get(struct kvstore *kvstore, struct kvs_idx *index,
void *k, const size_t klen, void **v, size_t *vlen)
{
dassert(kvstore);
return kvstore->kvstore_ops->get_bin(index, k, klen, v, vlen);
Expand All @@ -189,24 +225,41 @@ int kvs_get(struct kvstore *kvstore, struct kvs_idx *index, void *k,
int rc;

perfc_trace_inii(PFT_KVS_GET, PEM_KVS_TO_NFS);
perfc_trace_attr(PEA_KVS_GET_KLEN, klen);
perfc_trace_attr(PEA_KVS_GET_VLEN, *vlen);
perfc_trace_attr(PEA_KVS_KLEN, klen);
perfc_trace_attr(PEA_KVS_VLEN, *vlen);

rc = __kvs_get(kvstore, index, k, klen, v, vlen);

perfc_trace_attr(PEA_KVS_GET_RES_RC, rc);
perfc_trace_attr(PEA_KVS_RES_RC, rc);
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);

return rc;
}

int kvs_set(struct kvstore *kvstore, struct kvs_idx *index, void *k, const size_t klen,
void *v, const size_t vlen)
static inline int __kvs_set(struct kvstore *kvstore, struct kvs_idx *index,
void *k, const size_t klen,void *v,
const size_t vlen)
{
dassert(kvstore);
return kvstore->kvstore_ops->set_bin(index, k, klen, v, vlen);
}

int kvs_set(struct kvstore *kvstore, struct kvs_idx *index, void *k,
const size_t klen, void *v, const size_t vlen)
{
int rc;

perfc_trace_inii(PFT_KVS_SET, PEM_KVS_TO_NFS);
perfc_trace_attr(PEA_KVS_KLEN, klen);
perfc_trace_attr(PEA_KVS_VLEN, vlen);

rc = __kvs_set(kvstore, index, k, klen, v, vlen);

perfc_trace_attr(PEA_KVS_RES_RC, rc);
perfc_trace_finii(PERFC_TLS_POP_DONT_VERIFY);

return rc;
}
int kvs_del(struct kvstore *kvstore, struct kvs_idx *index, const void *k,
size_t klen)
{
Expand Down
Loading

0 comments on commit f173b7d

Please sign in to comment.