From 2f6a3f64713d8a09fe94235a12e87225048e11ac Mon Sep 17 00:00:00 2001 From: Jinshan Xiong Date: Mon, 1 Jun 2015 11:08:07 -0700 Subject: [PATCH] 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 --- lustre/osd-zfs/osd_object.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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, -- 1.8.3.1