From 80c9ba8d4070c6c106afd0362d2503324c7d0e99 Mon Sep 17 00:00:00 2001 From: Niu Yawei Date: Fri, 14 Apr 2017 01:18:21 -0400 Subject: [PATCH 1/1] LU-9280 osd-zfs: don't mark existing on failed creation In osd_object_create(), existing flag shouldn't be set on failure. Signed-off-by: Niu Yawei Change-Id: I77dd96f0e3c562c6bef659dc0af405a1ce488805 Reviewed-on: https://review.whamcloud.com/26617 Tested-by: Jenkins Reviewed-by: Alex Zhuravlev Reviewed-by: Fan Yong Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osd-zfs/osd_object.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index 042ea47..d8a4edd 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -1520,8 +1520,6 @@ static int osd_object_create(const struct lu_env *env, struct dt_object *dt, /* 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; @@ -1547,6 +1545,8 @@ out: 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); -- 1.8.3.1