1 /*
2  * Copyright (C) 2012 Red Hat, Inc.
3  *
4  * This file is released under the GPL.
5  */
6 
7 #ifndef DM_CACHE_BLOCK_TYPES_H
8 #define DM_CACHE_BLOCK_TYPES_H
9 
10 #include "persistent-data/dm-block-manager.h"
11 
12 /*----------------------------------------------------------------*/
13 
14 /*
15  * It's helpful to get sparse to differentiate between indexes into the
16  * origin device, indexes into the cache device, and indexes into the
17  * discard bitset.
18  */
19 
20 typedef dm_block_t __bitwise dm_oblock_t;
21 typedef uint32_t __bitwise dm_cblock_t;
22 typedef dm_block_t __bitwise dm_dblock_t;
23 
to_oblock(dm_block_t b)24 static inline dm_oblock_t to_oblock(dm_block_t b)
25 {
26 	return (__force dm_oblock_t) b;
27 }
28 
from_oblock(dm_oblock_t b)29 static inline dm_block_t from_oblock(dm_oblock_t b)
30 {
31 	return (__force dm_block_t) b;
32 }
33 
to_cblock(uint32_t b)34 static inline dm_cblock_t to_cblock(uint32_t b)
35 {
36 	return (__force dm_cblock_t) b;
37 }
38 
from_cblock(dm_cblock_t b)39 static inline uint32_t from_cblock(dm_cblock_t b)
40 {
41 	return (__force uint32_t) b;
42 }
43 
to_dblock(dm_block_t b)44 static inline dm_dblock_t to_dblock(dm_block_t b)
45 {
46 	return (__force dm_dblock_t) b;
47 }
48 
from_dblock(dm_dblock_t b)49 static inline dm_block_t from_dblock(dm_dblock_t b)
50 {
51 	return (__force dm_block_t) b;
52 }
53 
54 #endif /* DM_CACHE_BLOCK_TYPES_H */
55