Whamcloud - gitweb
LU-7049 osp: Not attr_get for new OSP object 02/16102/2
authorwang di <di.wang@intel.com>
Tue, 25 Aug 2015 11:42:46 +0000 (04:42 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 1 Sep 2015 03:00:56 +0000 (03:00 +0000)
Do not do attr_get for new OSP object, to save
RPC between MDTs.

Signed-off-by: wang di <di.wang@intel.com>
Change-Id: Iecc0fde64f076b28c752294c8b403693fe26e43a
Reviewed-on: http://review.whamcloud.com/16102
Tested-by: Jenkins
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Lai Siyao <lai.siyao@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osp/osp_object.c

index 0fa91c0..7517b35 100644 (file)
@@ -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);
        }