From: Jinshan Xiong Date: Mon, 1 Jun 2015 18:08:07 +0000 (-0700) Subject: LU-6856 zfs: handle non existing file in osd_object_ref_del X-Git-Tag: 2.7.64~6 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=2f6a3f64713d8a09fe94235a12e87225048e11ac;hp=78335a98654f7c52dbe820cf575d2f9f87a6f595;p=fs%2Flustre-release.git LU-6856 zfs: handle non existing file in osd_object_ref_del Remove false assertion in zfs:osd_object_ref_del() because this may be in the cleanning path of error handling. Signed-off-by: Jinshan Xiong Change-Id: Ib7b9d80816bdab7f68b36a33e95140ea7f3eae8c Reviewed-on: http://review.whamcloud.com/15611 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Nathaniel Clark --- diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index 2dc0370..d59aa91 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -1525,8 +1525,10 @@ static int osd_object_ref_add(const struct lu_env *env, ENTRY; + if (!dt_object_exists(dt)) + RETURN(-ENOENT); + LASSERT(osd_invariant(obj)); - LASSERT(dt_object_exists(dt)); LASSERT(obj->oo_sa_hdl != NULL); oh = container_of0(handle, struct osd_thandle, ot_super); @@ -1573,7 +1575,7 @@ static int osd_object_ref_del(const struct lu_env *env, write_unlock(&obj->oo_attr_lock); rc = osd_object_sa_update(obj, SA_ZPL_LINKS(osd), &nlink, 8, oh); - return rc; + RETURN(rc); } static int osd_object_sync(const struct lu_env *env, struct dt_object *dt,