Whamcloud - gitweb
LU-12675 mdt: release object reference upon error 40/43940/3
authorBruno Faccini <bruno.faccini@intel.com>
Wed, 21 Aug 2019 13:32:54 +0000 (15:32 +0200)
committerOleg Drokin <green@whamcloud.com>
Tue, 15 Jun 2021 16:23:05 +0000 (16:23 +0000)
LBUG ("(lu_object.c:1196:lu_device_fini()) ASSERTION(
atomic_read(&d->ld_ref) == 0) failed: Refcount is <x>") can
intermitently occur during umount of MDT0000, upon specific
use cases (playing with file/dir having foreign LOV/LMV), and
due to object reference set/leaked on server side.

Lustre-change: https://review.whamcloud.com/35845
Lustre-commit: 4649899fbba095c7c3eb7ce1c8893040ed6e2494

Signed-off-by: Bruno Faccini <bruno.faccini@intel.com>
Change-Id: Ic49b2bb0402b1a6e51d7ba656f9957eeda1bd0fb
Reviewed-by: Patrick Farrell <pfarrell@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Signed-off-by: Minh Diep <mdiep@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/43940
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/mdt/mdt_reint.c

index 051fe5f..157161f 100644 (file)
@@ -924,7 +924,7 @@ relock:
        if (!cos_incompat) {
                rc = mdt_object_striped(info, mc);
                if (rc < 0)
-                       GOTO(unlock_parent, rc);
+                       GOTO(put_child, rc);
 
                cos_incompat = rc;
                if (cos_incompat) {