(&self, block_device: &Arc<dyn BlockDevice>, bit: usize)
| 54 | } |
| 55 | |
| 56 | pub fn dealloc(&self, block_device: &Arc<dyn BlockDevice>, bit: usize) { |
| 57 | let (block_pos, bits64_pos, inner_pos) = decomposition(bit); |
| 58 | get_block_cache(block_pos + self.start_block_id, Arc::clone(block_device)) |
| 59 | .lock() |
| 60 | .modify(0, |bitmap_block: &mut BitmapBlock| { |
| 61 | assert!(bitmap_block[bits64_pos] & (1u64 << inner_pos) > 0); |
| 62 | bitmap_block[bits64_pos] -= 1u64 << inner_pos; |
| 63 | }); |
| 64 | } |
| 65 | |
| 66 | pub fn maximum(&self) -> usize { |
| 67 | self.blocks * BLOCK_BITS |
no test coverage detected