git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ecryptfs: Fix refcnt leak on ecryptfs_follow_link() error path
[safe/jmp/linux-2.6]
/
fs
/
mbcache.c
diff --git
a/fs/mbcache.c
b/fs/mbcache.c
index
0ff7125
..
ec88ff3
100644
(file)
--- a/
fs/mbcache.c
+++ b/
fs/mbcache.c
@@
-85,7
+85,7
@@
struct mb_cache {
#ifndef MB_CACHE_INDEXES_COUNT
int c_indexes_count;
#endif
#ifndef MB_CACHE_INDEXES_COUNT
int c_indexes_count;
#endif
-
kmem_cache_t
*c_entry_cache;
+
struct kmem_cache
*c_entry_cache;
struct list_head *c_block_hash;
struct list_head *c_indexes_hash[0];
};
struct list_head *c_block_hash;
struct list_head *c_indexes_hash[0];
};
@@
-100,7
+100,6
@@
struct mb_cache {
static LIST_HEAD(mb_cache_list);
static LIST_HEAD(mb_cache_lru_list);
static DEFINE_SPINLOCK(mb_cache_spinlock);
static LIST_HEAD(mb_cache_list);
static LIST_HEAD(mb_cache_lru_list);
static DEFINE_SPINLOCK(mb_cache_spinlock);
-static struct shrinker *mb_shrinker;
static inline int
mb_cache_indexes(struct mb_cache *cache)
static inline int
mb_cache_indexes(struct mb_cache *cache)
@@
-118,6
+117,10
@@
mb_cache_indexes(struct mb_cache *cache)
static int mb_cache_shrink_fn(int nr_to_scan, gfp_t gfp_mask);
static int mb_cache_shrink_fn(int nr_to_scan, gfp_t gfp_mask);
+static struct shrinker mb_cache_shrinker = {
+ .shrink = mb_cache_shrink_fn,
+ .seeks = DEFAULT_SEEKS,
+};
static inline int
__mb_cache_entry_is_hashed(struct mb_cache_entry *ce)
static inline int
__mb_cache_entry_is_hashed(struct mb_cache_entry *ce)
@@
-289,7
+292,7
@@
mb_cache_create(const char *name, struct mb_cache_op *cache_op,
INIT_LIST_HEAD(&cache->c_indexes_hash[m][n]);
}
cache->c_entry_cache = kmem_cache_create(name, entry_size, 0,
INIT_LIST_HEAD(&cache->c_indexes_hash[m][n]);
}
cache->c_entry_cache = kmem_cache_create(name, entry_size, 0,
- SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, NULL
, NULL
);
+ SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD, NULL);
if (!cache->c_entry_cache)
goto fail;
if (!cache->c_entry_cache)
goto fail;
@@
-396,13
+399,13
@@
mb_cache_destroy(struct mb_cache *cache)
* if no more memory was available.
*/
struct mb_cache_entry *
* if no more memory was available.
*/
struct mb_cache_entry *
-mb_cache_entry_alloc(struct mb_cache *cache)
+mb_cache_entry_alloc(struct mb_cache *cache
, gfp_t gfp_flags
)
{
struct mb_cache_entry *ce;
{
struct mb_cache_entry *ce;
- atomic_inc(&cache->c_entry_count);
- ce = kmem_cache_alloc(cache->c_entry_cache, GFP_KERNEL);
+ ce = kmem_cache_alloc(cache->c_entry_cache, gfp_flags);
if (ce) {
if (ce) {
+ atomic_inc(&cache->c_entry_count);
INIT_LIST_HEAD(&ce->e_lru_list);
INIT_LIST_HEAD(&ce->e_block_list);
ce->e_cache = cache;
INIT_LIST_HEAD(&ce->e_lru_list);
INIT_LIST_HEAD(&ce->e_block_list);
ce->e_cache = cache;
@@
-662,13
+665,13
@@
mb_cache_entry_find_next(struct mb_cache_entry *prev, int index,
static int __init init_mbcache(void)
{
static int __init init_mbcache(void)
{
-
mb_shrinker = set_shrinker(DEFAULT_SEEKS, mb_cache_shrink_fn
);
+
register_shrinker(&mb_cache_shrinker
);
return 0;
}
static void __exit exit_mbcache(void)
{
return 0;
}
static void __exit exit_mbcache(void)
{
-
remove_shrinker(mb
_shrinker);
+
unregister_shrinker(&mb_cache
_shrinker);
}
module_init(init_mbcache)
}
module_init(init_mbcache)