Whamcloud - gitweb
LU-6624 osc: LBUG in osc_lru_reclaim 01/14901/3
authorHiroya Nozaki <nozaki.hiroya@jp.fujitsu.com>
Thu, 21 May 2015 06:46:59 +0000 (15:46 +0900)
committerOleg Drokin <oleg.drokin@intel.com>
Fri, 5 Jun 2015 01:43:10 +0000 (01:43 +0000)
LASSERT touches cl_client_cache->ccc_lru without any protection.
So this patch the LASSERT moves to the section protected by
cl_client_cache->ccc_lru_lock

Signed-off-by: Hiroya Nozaki <nozaki.hiroya@jp.fujitsu.com>
Change-Id: I1bc7829e4114a986a8299d652b978da1842829a5
Reviewed-on: http://review.whamcloud.com/14901
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/osc/osc_page.c

index a4ab52e..d187032 100644 (file)
@@ -790,7 +790,6 @@ long osc_lru_reclaim(struct client_obd *cli)
        ENTRY;
 
        LASSERT(cache != NULL);
-       LASSERT(!list_empty(&cache->ccc_lru));
 
        env = cl_env_nested_get(&nest);
        if (IS_ERR(env))
@@ -814,6 +813,8 @@ long osc_lru_reclaim(struct client_obd *cli)
        /* Reclaim LRU slots from other client_obd as it can't free enough
         * from its own. This should rarely happen. */
        spin_lock(&cache->ccc_lru_lock);
+       LASSERT(!list_empty(&cache->ccc_lru));
+
        cache->ccc_lru_shrinkers++;
        list_move_tail(&cli->cl_lru_osc, &cache->ccc_lru);