Whamcloud - gitweb
LU-9678 osd-zfs: register arc_prune_func() after site init 08/27708/3
authorLai Siyao <lai.siyao@intel.com>
Fri, 16 Jun 2017 14:34:33 +0000 (22:34 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 22 Jun 2017 02:55:28 +0000 (02:55 +0000)
Register arc_prune_func() after site init, otherwise it may be
called while object cache is not initialized yet.

Signed-off-by: Lai Siyao <lai.siyao@intel.com>
Change-Id: I822252da906f03899386fb0941cc11c1c3366fbf
Reviewed-on: https://review.whamcloud.com/27708
Tested-by: Jenkins
Reviewed-by: Fan Yong <fan.yong@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Alex Zhuravlev <alexey.zhuravlev@intel.com>
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osd-zfs/osd_handler.c

index 47a8e82..bcb8705 100644 (file)
@@ -96,6 +96,8 @@ static void arc_prune_func(int64_t bytes, void *private)
        struct lu_env      env;
        int rc;
 
+       LASSERT(site->ls_obj_hash);
+
        rc = lu_env_init(&env, LCT_SHRINKER);
        if (rc) {
                CERROR("%s: can't initialize shrinker env: rc = %d\n",
@@ -1051,10 +1053,6 @@ static int osd_mount(const struct lu_env *env,
        o->od_xattr_in_sa = B_TRUE;
        o->od_max_blksz = osd_spa_maxblocksize(o->od_os->os_spa);
 
-       rc = osd_objset_register_callbacks(o);
-       if (rc)
-               GOTO(err, rc);
-
        rc = __osd_obj2dnode(o->od_os, o->od_rootid, &rootdn);
        if (rc)
                GOTO(err, rc);
@@ -1085,6 +1083,10 @@ static int osd_mount(const struct lu_env *env,
        if (rc)
                GOTO(err, rc);
 
+       rc = osd_objset_register_callbacks(o);
+       if (rc)
+               GOTO(err, rc);
+
        rc = osd_procfs_init(o, o->od_svname);
        if (rc)
                GOTO(err, rc);