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