From 7bcc173ee3627fe184b9644889d2ce27d62e81e4 Mon Sep 17 00:00:00 2001 From: wang di Date: Tue, 25 Aug 2015 04:42:46 -0700 Subject: [PATCH] LU-7049 osp: Not attr_get for new OSP object Do not do attr_get for new OSP object, to save RPC between MDTs. Signed-off-by: wang di Change-Id: Iecc0fde64f076b28c752294c8b403693fe26e43a Reviewed-on: http://review.whamcloud.com/16102 Tested-by: Jenkins Reviewed-by: Andreas Dilger Reviewed-by: Lai Siyao Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osp/osp_object.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lustre/osp/osp_object.c b/lustre/osp/osp_object.c index 0fa91c0e..7517b35 100644 --- a/lustre/osp/osp_object.c +++ b/lustre/osp/osp_object.c @@ -2124,13 +2124,18 @@ static int osp_object_init(const struct lu_env *env, struct lu_object *o, po->opo_obj.do_ops = &osp_md_obj_ops; po->opo_obj.do_body_ops = &osp_md_body_ops; - rc = po->opo_obj.do_ops->do_attr_get(env, lu2dt_obj(o), la); - if (rc == 0) - o->lo_header->loh_attr |= - LOHA_EXISTS | (la->la_mode & S_IFMT); - if (rc == -ENOENT) { + if (conf != NULL && conf->loc_flags & LOC_F_NEW) { po->opo_non_exist = 1; - rc = 0; + } else { + rc = po->opo_obj.do_ops->do_attr_get(env, lu2dt_obj(o), + la); + if (rc == 0) + o->lo_header->loh_attr |= + LOHA_EXISTS | (la->la_mode & S_IFMT); + if (rc == -ENOENT) { + po->opo_non_exist = 1; + rc = 0; + } } init_rwsem(&po->opo_sem); } -- 1.8.3.1