From: Nathaniel Clark Date: Wed, 20 Jan 2016 16:16:00 +0000 (-0500) Subject: LU-6719 osd-zfs: Ignore EEXIST during object init X-Git-Tag: 2.7.90~13 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=d96c38aa85d80f5e0630c28d242f8279987c8d5e;p=fs%2Flustre-release.git LU-6719 osd-zfs: Ignore EEXIST during object init ZFS can return EEXIST if object exists but is being destroyed. Specifically see dnode_hold_impl() Signed-off-by: Nathaniel Clark Change-Id: Id99b406b2f02a1337b9f1566fba30dbced755d5d Reviewed-on: http://review.whamcloud.com/18054 Reviewed-by: Alex Zhuravlev Tested-by: Jenkins Reviewed-by: Fan Yong Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/osd-zfs/osd_object.c b/lustre/osd-zfs/osd_object.c index d59aa91..9884333 100644 --- a/lustre/osd-zfs/osd_object.c +++ b/lustre/osd-zfs/osd_object.c @@ -399,6 +399,11 @@ static int osd_object_init(const struct lu_env *env, struct lu_object *l, if (rc == 0) { LASSERT(obj->oo_db == NULL); rc = __osd_obj2dbuf(env, osd->od_os, oid, &obj->oo_db); + /* EEXIST will be returned if object is being deleted in ZFS */ + if (rc == -EEXIST) { + rc = 0; + GOTO(out, rc); + } if (rc != 0) { CERROR("%s: lookup "DFID"/"LPX64" failed: rc = %d\n", osd->od_svname, PFID(lu_object_fid(l)), oid, rc);