Whamcloud - gitweb
LU-3649 lfsck: NOT cache lfsck local objects 53/7153/2
authorFan Yong <fan.yong@intel.com>
Sat, 6 Jul 2013 01:01:09 +0000 (09:01 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 29 Jul 2013 22:52:45 +0000 (22:52 +0000)
When LFSCK build its local objects, such as "lfsck_bookmark", the
stack maybe not fully setup, and the local_storage uses own stack
and we should drop those objects from cache immediately after put.

Signed-off-by: Fan Yong <fan.yong@intel.com>
Change-Id: I4b122f5a8518499d5986e1abfae912c6fb3cff5f
Reviewed-on: http://review.whamcloud.com/7153
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Tested-by: Oleg Drokin <oleg.drokin@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/lfsck/lfsck_lib.c

index 4fefa7d..99fcf39 100644 (file)
@@ -100,7 +100,7 @@ static inline void lfsck_component_put(const struct lu_env *env,
 {
        if (atomic_dec_and_test(&com->lc_ref)) {
                if (com->lc_obj != NULL)
-                       lu_object_put(env, &com->lc_obj->do_lu);
+                       lu_object_put_nocache(env, &com->lc_obj->do_lu);
                if (com->lc_file_ram != NULL)
                        OBD_FREE(com->lc_file_ram, com->lc_file_size);
                if (com->lc_file_disk != NULL)
@@ -167,7 +167,7 @@ static void lfsck_instance_cleanup(const struct lu_env *env,
        LASSERT(thread_is_init(thread) || thread_is_stopped(thread));
 
        if (lfsck->li_obj_oit != NULL) {
-               lu_object_put(env, &lfsck->li_obj_oit->do_lu);
+               lu_object_put_nocache(env, &lfsck->li_obj_oit->do_lu);
                lfsck->li_obj_oit = NULL;
        }
 
@@ -197,7 +197,7 @@ static void lfsck_instance_cleanup(const struct lu_env *env,
        }
 
        if (lfsck->li_bookmark_obj != NULL) {
-               lu_object_put(env, &lfsck->li_bookmark_obj->do_lu);
+               lu_object_put_nocache(env, &lfsck->li_bookmark_obj->do_lu);
                lfsck->li_bookmark_obj = NULL;
        }
 
@@ -207,7 +207,7 @@ static void lfsck_instance_cleanup(const struct lu_env *env,
        }
 
        if (lfsck->li_local_root != NULL) {
-               lu_object_put(env, &lfsck->li_local_root->do_lu);
+               lu_object_put_nocache(env, &lfsck->li_local_root->do_lu);
                lfsck->li_local_root = NULL;
        }