linux/include/linux/mbcache.h
<<
>>
Prefs
   1/*
   2  File: linux/mbcache.h
   3
   4  (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org>
   5*/
   6struct mb_cache_entry {
   7        struct list_head                e_lru_list;
   8        struct mb_cache                 *e_cache;
   9        unsigned short                  e_used;
  10        unsigned short                  e_queued;
  11        atomic_t                        e_refcnt;
  12        struct block_device             *e_bdev;
  13        sector_t                        e_block;
  14        struct hlist_bl_node            e_block_list;
  15        struct {
  16                struct hlist_bl_node    o_list;
  17                unsigned int            o_key;
  18        } e_index;
  19        struct hlist_bl_head            *e_block_hash_p;
  20        struct hlist_bl_head            *e_index_hash_p;
  21};
  22
  23struct mb_cache {
  24        struct list_head                c_cache_list;
  25        const char                      *c_name;
  26        atomic_t                        c_entry_count;
  27        int                             c_max_entries;
  28        int                             c_bucket_bits;
  29        struct kmem_cache               *c_entry_cache;
  30        struct hlist_bl_head            *c_block_hash;
  31        struct hlist_bl_head            *c_index_hash;
  32};
  33
  34/* Functions on caches */
  35
  36struct mb_cache *mb_cache_create(const char *, int);
  37void mb_cache_shrink(struct block_device *);
  38void mb_cache_destroy(struct mb_cache *);
  39
  40/* Functions on cache entries */
  41
  42struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t);
  43int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *,
  44                          sector_t, unsigned int);
  45void mb_cache_entry_release(struct mb_cache_entry *);
  46void mb_cache_entry_free(struct mb_cache_entry *);
  47struct mb_cache_entry *mb_cache_entry_get(struct mb_cache *,
  48                                          struct block_device *,
  49                                          sector_t);
  50struct mb_cache_entry *mb_cache_entry_find_first(struct mb_cache *cache,
  51                                                 struct block_device *, 
  52                                                 unsigned int);
  53struct mb_cache_entry *mb_cache_entry_find_next(struct mb_cache_entry *,
  54                                                struct block_device *, 
  55                                                unsigned int);
  56