const char *name, int isdir, struct thandle *th,
struct lustre_capa *capa)
{
- int rc;
struct dt_object *next = mdd_object_child(pobj);
+ struct timeval start;
+ int rc;
ENTRY;
-
+
+ mdd_lproc_time_start(mdo2mdd(&pobj->mod_obj), &start,
+ LPROC_MDD_INDEX_INSERT);
#if 0
struct lu_attr *la = &mdd_env_info(env)->mti_la;
#endif
rc = mdd_attr_set_internal(env, mdd_obj, la, handle, 0);
#endif
}
+ mdd_lproc_time_end(mdo2mdd(&pobj->mod_obj), &start,
+ LPROC_MDD_INDEX_INSERT);
return rc;
}
int is_dir, struct thandle *handle,
struct lustre_capa *capa)
{
- int rc;
struct dt_object *next = mdd_object_child(pobj);
+ struct timeval start;
+ int rc;
ENTRY;
+ mdd_lproc_time_start(mdo2mdd(&pobj->mod_obj), &start,
+ LPROC_MDD_INDEX_DELETE);
if (dt_try_as_dir(env, next)) {
rc = next->do_index_ops->dio_delete(env, next,
(struct dt_key *)name,
mdd_ref_del_internal(env, pobj, handle);
} else
rc = -ENOTDIR;
+ mdd_lproc_time_end(mdo2mdd(&pobj->mod_obj), &start,
+ LPROC_MDD_INDEX_DELETE);
RETURN(rc);
}
-
static int __mdd_index_insert_only(const struct lu_env *env,
struct mdd_object *pobj,
const struct lu_fid *lf,
obd_set_info_async(mdd2obd_dev(mdd)->u.mds.mds_osc_exp,
strlen("unlinked"), "unlinked", 0,
NULL, NULL);
-
cleanup:
mdd_unlock2(env, mdd_pobj, mdd_cobj);
mdd_trans_stop(env, mdd, rc, handle);
struct dt_object *dir = mdd_object_child(mdd_obj);
struct dt_rec *rec = (struct dt_rec *)fid;
const struct dt_key *key = (const struct dt_key *)name;
+ struct timeval start;
int rc;
ENTRY;
+ mdd_lproc_time_start(mdo2mdd(pobj), &start, LPROC_MDD_LOOKUP);
if (mdd_is_dead_obj(mdd_obj))
RETURN(-ESTALE);
else
rc = -ENOTDIR;
+ mdd_lproc_time_end(mdo2mdd(pobj), &start, LPROC_MDD_LOOKUP);
RETURN(rc);
}
enum {
LPROC_MDD_OPEN = 0,
LPROC_MDD_CREATE,
+ LPROC_MDD_INDEX_INSERT,
+ LPROC_MDD_INDEX_DELETE,
+ LPROC_MDD_SET_MD,
+ LPROC_MDD_GET_MD,
+ LPROC_MDD_UNLINK,
+ LPROC_MDD_UNLINK_LOG,
+ LPROC_MDD_LOV_CREATE,
+ LPROC_MDD_LOOKUP,
LPROC_MDD_LAST
};
#endif
int mdd_get_md(const struct lu_env *env, struct mdd_object *obj,
void *md, int *md_size, const char *name)
{
- struct dt_object *next;
+ struct mdd_device *mdd = mdo2mdd(&obj->mod_obj);
+ struct dt_object *next;
+ struct timeval start;
int rc;
ENTRY;
-
+
+ mdd_lproc_time_start(mdd, &start, LPROC_MDD_GET_MD);
next = mdd_object_child(obj);
rc = next->do_ops->do_xattr_get(env, next,
mdd_buf_get(env, md, *md_size), name,
/* FIXME convert lov EA but fixed after verification test */
*md_size = rc;
}
-
+
+ mdd_lproc_time_end(mdd, &start, LPROC_MDD_GET_MD);
RETURN (rc);
}
struct mdd_object *child, struct lov_mds_md *lmmp,
int lmm_size, struct thandle *handle, int set_stripe)
{
- int rc = 0;
- umode_t mode;
+ struct mdd_device *mdd = mdo2mdd(&child->mod_obj);
+ struct timeval start;
struct lu_buf *buf;
+ umode_t mode;
+ int rc = 0;
ENTRY;
-
+
+ mdd_lproc_time_start(mdd, &start, LPROC_MDD_SET_MD);
buf = mdd_buf_get(env, lmmp, lmm_size);
mode = mdd_object_type(child);
if (S_ISREG(mode) && lmm_size > 0) {
}
CDEBUG(D_INFO, "Set lov md %p size %d for fid "DFID" rc %d\n",
lmmp, lmm_size, PFID(mdo2fid(child)), rc);
+ mdd_lproc_time_end(mdd, &start, LPROC_MDD_SET_MD);
RETURN(rc);
}
struct lov_stripe_md *lsm = NULL;
const void *eadata = spec->u.sp_ea.eadata;
__u32 create_flags = spec->sp_cr_flags;
- int rc = 0;
struct obd_trans_info *oti = &mdd_env_info(env)->mti_oti;
struct dt_object *next;
+ struct timeval start;
+ int rc = 0;
ENTRY;
if (create_flags & MDS_OPEN_DELAY_CREATE ||
!(create_flags & FMODE_WRITE))
RETURN(0);
+
+ mdd_lproc_time_start(mdd, &start, LPROC_MDD_LOV_CREATE);
oti_init(oti, NULL);
rc = mdd_lov_objid_alloc(env, mdd);
obd_free_memmd(lov_exp, &lsm);
if (rc != 0)
mdd_lov_objid_free(env, mdd);
+
+ mdd_lproc_time_end(mdd, &start, LPROC_MDD_LOV_CREATE);
return rc;
}
struct mdd_object *mdd_cobj, struct md_attr *ma)
{
struct obd_device *obd = mdd2obd_dev(mdd);
-
+ struct timeval start;
+
+ mdd_lproc_time_start(mdd, &start, LPROC_MDD_UNLINK_LOG);
LASSERT(ma->ma_valid & MA_LOV);
if ((ma->ma_cookie_size > 0) &&
ma->ma_cookie, ma->ma_cookie_size) > 0)) {
ma->ma_valid |= MA_COOKIE;
}
+ mdd_lproc_time_end(mdd, &start, LPROC_MDD_UNLINK_LOG);
return 0;
}
lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_OPEN,
LPROCFS_CNTR_AVGMINMAX, "open", "time");
-
lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_CREATE,
LPROCFS_CNTR_AVGMINMAX, "create", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_INDEX_INSERT,
+ LPROCFS_CNTR_AVGMINMAX, "index_insert", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_INDEX_DELETE,
+ LPROCFS_CNTR_AVGMINMAX, "index_delete", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_UNLINK,
+ LPROCFS_CNTR_AVGMINMAX, "unlink", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_UNLINK_LOG,
+ LPROCFS_CNTR_AVGMINMAX, "unlink_log", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_LOV_CREATE,
+ LPROCFS_CNTR_AVGMINMAX, "lov_create", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_SET_MD,
+ LPROCFS_CNTR_AVGMINMAX, "set_md", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_GET_MD,
+ LPROCFS_CNTR_AVGMINMAX, "get_md", "time");
+ lprocfs_counter_init(mdd->mdd_stats, LPROC_MDD_LOOKUP,
+ LPROCFS_CNTR_AVGMINMAX, "lookup", "lookup");
cleanup:
if (rc) {
lprocfs_free_stats(stats);