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