fix return value for mb_cache_shrink_fn when nr_to_scan > 0
Subsystems (3)
Sorry, missed that. Regerated and passed checkpatch.pl check. Please check it.
Signed-off-by Wang Sheng-Hui <[email protected]>
--- fs/mbcache.c | 23 ++++++++++++----------- 1 files changed, 12 insertions(+), 11 deletions(-)
fs/mbcache.c +12 -10
@@ -201,21 +201,14 @@ mb_cache_shrink_fn(int nr_to_scan, gfp_t gfp_mask) {LIST_HEAD (free_list);struct list_head *l, *ltmp; +struct mb_cache *cache;int count =0 ; -spin_lock (&mb_cache_spinlock); -list_for_each (l, &mb_cache_list) { - struct mb_cache *cache - list_entry(l, struct mb_cache, c_cache_list); -mb_debug ("cache %s (%d)" , cache->c_name, -atomic_read (&cache->c_entry_count)); - count +=atomic_read (&cache->c_entry_count); - }mb_debug ("trying to free %d entries" , nr_to_scan); -if (nr_to_scan =0 ) { -spin_unlock (&mb_cache_spinlock); +if (nr_to_scan =0 ) goto out; - } + +spin_lock (&mb_cache_spinlock);while (nr_to_scan-- && !list_empty (&mb_cache_lru_list)) { struct mb_cache_entry *ce list_entry(mb_cache_lru_list.next,
@@ -229,6 +222,14 @@ mb_cache_shrink_fn(int nr_to_scan, gfp_t gfp_mask) e_lru_list), gfp_mask); } out: +spin_lock (&mb_cache_spinlock); +list_for_each_entry (cache, &mb_cache_list, c_cache_list) { +mb_debug ("cache %s (%d)" , cache->c_name, +atomic_read (&cache->c_entry_count)); + count +=atomic_read (&cache->c_entry_count); + } +spin_unlock (&mb_cache_spinlock); +return (count /100 ) * sysctl_vfs_cache_pressure; }
Signature · 1 line
1.6.3.3
Sorry to trouble you all & Thanks for your instructions! I noticed that Andreas Gruenbacher has submitted patches on mbcache.
Please ignore mine.
Signature · 2 lines
Thanks and Best Regards, shenghui