From c1d70a48899a5af92ebb10bacab1d9593930c441 Mon Sep 17 00:00:00 2001 From: Lai Siyao Date: Fri, 16 Jun 2017 22:34:33 +0800 Subject: [PATCH] LU-9678 osd-zfs: register arc_prune_func() after site init Register arc_prune_func() after site init, otherwise it may be called while object cache is not initialized yet. Signed-off-by: Lai Siyao Change-Id: I822252da906f03899386fb0941cc11c1c3366fbf Reviewed-on: https://review.whamcloud.com/27708 Tested-by: Jenkins Reviewed-by: Fan Yong Reviewed-by: Andreas Dilger Reviewed-by: Alex Zhuravlev Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/osd-zfs/osd_handler.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lustre/osd-zfs/osd_handler.c b/lustre/osd-zfs/osd_handler.c index 47a8e82..bcb8705 100644 --- a/lustre/osd-zfs/osd_handler.c +++ b/lustre/osd-zfs/osd_handler.c @@ -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); -- 1.8.3.1