X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Flinux%2Fmbcache.h;h=99e044b4efc6d62ea92e79f79a2b74ec8b8559ad;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=7738749e128550a9a6fc0ce330cccf9e3488401b;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h index 7738749e1..99e044b4e 100644 --- a/include/linux/mbcache.h +++ b/include/linux/mbcache.h @@ -7,46 +7,29 @@ /* Hardwire the number of additional indexes */ #define MB_CACHE_INDEXES_COUNT 1 -struct mb_cache_entry; - -struct mb_cache_op { - int (*free)(struct mb_cache_entry *, int); -}; - -struct mb_cache { - struct list_head c_cache_list; - const char *c_name; - struct mb_cache_op c_op; - atomic_t c_entry_count; - int c_bucket_bits; -#ifndef MB_CACHE_INDEXES_COUNT - int c_indexes_count; -#endif - kmem_cache_t *c_entry_cache; - struct list_head *c_block_hash; - struct list_head *c_indexes_hash[0]; -}; - -struct mb_cache_entry_index { - struct list_head o_list; - unsigned int o_key; -}; - struct mb_cache_entry { struct list_head e_lru_list; struct mb_cache *e_cache; - atomic_t e_used; + unsigned short e_used; + unsigned short e_queued; struct block_device *e_bdev; sector_t e_block; struct list_head e_block_list; - struct mb_cache_entry_index e_indexes[0]; + struct { + struct list_head o_list; + unsigned int o_key; + } e_indexes[0]; +}; + +struct mb_cache_op { + int (*free)(struct mb_cache_entry *, gfp_t); }; /* Functions on caches */ struct mb_cache * mb_cache_create(const char *, struct mb_cache_op *, size_t, int, int); -void mb_cache_shrink(struct mb_cache *, struct block_device *); +void mb_cache_shrink(struct block_device *); void mb_cache_destroy(struct mb_cache *); /* Functions on cache entries */ @@ -54,11 +37,8 @@ void mb_cache_destroy(struct mb_cache *); struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *); int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *, sector_t, unsigned int[]); -void mb_cache_entry_rehash(struct mb_cache_entry *, unsigned int[]); void mb_cache_entry_release(struct mb_cache_entry *); -void mb_cache_entry_takeout(struct mb_cache_entry *); void mb_cache_entry_free(struct mb_cache_entry *); -struct mb_cache_entry *mb_cache_entry_dup(struct mb_cache_entry *); struct mb_cache_entry *mb_cache_entry_get(struct mb_cache *, struct block_device *, sector_t);