Line data Source code
1 : /*
2 : File: linux/mbcache.h
3 :
4 : (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org>
5 : */
6 :
7 : /* Hardwire the number of additional indexes */
8 : #define MB_CACHE_INDEXES_COUNT 1
9 :
10 : struct mb_cache_entry {
11 : struct list_head e_lru_list;
12 : struct mb_cache *e_cache;
13 : unsigned short e_used;
14 : unsigned short e_queued;
15 : struct block_device *e_bdev;
16 : sector_t e_block;
17 : struct list_head e_block_list;
18 : struct {
19 : struct list_head o_list;
20 : unsigned int o_key;
21 : } e_indexes[0];
22 : };
23 1 :
24 : struct mb_cache_op {
25 : int (*free)(struct mb_cache_entry *, gfp_t);
26 : };
27 :
28 : /* Functions on caches */
29 :
30 : struct mb_cache * mb_cache_create(const char *, struct mb_cache_op *, size_t,
31 : int, int);
32 : void mb_cache_shrink(struct block_device *);
33 : void mb_cache_destroy(struct mb_cache *);
34 :
35 : /* Functions on cache entries */
36 :
37 : struct mb_cache_entry *mb_cache_entry_alloc(struct mb_cache *, gfp_t);
38 : int mb_cache_entry_insert(struct mb_cache_entry *, struct block_device *,
39 : sector_t, unsigned int[]);
40 : void mb_cache_entry_release(struct mb_cache_entry *);
41 : void mb_cache_entry_free(struct mb_cache_entry *);
42 : struct mb_cache_entry *mb_cache_entry_get(struct mb_cache *,
43 : struct block_device *,
44 : sector_t);
45 : #if !defined(MB_CACHE_INDEXES_COUNT) || (MB_CACHE_INDEXES_COUNT > 0)
46 : struct mb_cache_entry *mb_cache_entry_find_first(struct mb_cache *cache, int,
47 : struct block_device *,
48 : unsigned int);
49 : struct mb_cache_entry *mb_cache_entry_find_next(struct mb_cache_entry *, int,
50 : struct block_device *,
51 : unsigned int);
52 : #endif
|