In osd_object_create(), existing flag shouldn't be set on failure.
Signed-off-by: Niu Yawei <yawei.niu@intel.com>
Change-Id: I77dd96f0e3c562c6bef659dc0af405a1ce488805
Reviewed-on: https://review.whamcloud.com/26617
Tested-by: Jenkins
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Reviewed-by: Fan Yong <fan.yong@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
/* XXX: oo_lma_flags */
obj->oo_dt.do_lu.lo_header->loh_attr |= obj->oo_attr.la_mode & S_IFMT;
/* XXX: oo_lma_flags */
obj->oo_dt.do_lu.lo_header->loh_attr |= obj->oo_attr.la_mode & S_IFMT;
- smp_mb();
- obj->oo_dt.do_lu.lo_header->loh_attr |= LOHA_EXISTS;
if (likely(!fid_is_acct(lu_object_fid(&obj->oo_dt.do_lu))))
/* no body operations for accounting objects */
obj->oo_dt.do_body_ops = &osd_body_ops;
if (likely(!fid_is_acct(lu_object_fid(&obj->oo_dt.do_lu))))
/* no body operations for accounting objects */
obj->oo_dt.do_body_ops = &osd_body_ops;
dmu_object_free(osd->od_os, dn->dn_object, oh->ot_tx);
osd_dnode_rele(dn);
obj->oo_dn = NULL;
dmu_object_free(osd->od_os, dn->dn_object, oh->ot_tx);
osd_dnode_rele(dn);
obj->oo_dn = NULL;
+ } else if (!rc) {
+ obj->oo_dt.do_lu.lo_header->loh_attr |= LOHA_EXISTS;
}
up_write(&obj->oo_guard);
RETURN(rc);
}
up_write(&obj->oo_guard);
RETURN(rc);