2 * Copyright 2001-2008, Axel Dörfler, axeld@pinc-software.de.
3 * This file may be used under the terms of the MIT License.
8 //! interface for the block cache
16 # define TRACE(x...) dprintf("\33[34mbtrfs:\33[0m " x)
18 # define TRACE(x...) ;
24 CachedBlock(Volume
* volume
);
25 CachedBlock(Volume
* volume
, off_t block
);
31 const uint8
* SetTo(off_t block
);
32 uint8
* SetToWritable(off_t block
, int32 transactionId
,
35 const uint8
* Block() const { return fBlock
; }
36 off_t
BlockNumber() const { return fBlockNumber
; }
37 bool IsWritable() const { return fWritable
; }
40 CachedBlock(const CachedBlock
&);
41 CachedBlock
& operator=(const CachedBlock
&);
56 CachedBlock::CachedBlock(Volume
* volume
)
67 CachedBlock::CachedBlock(Volume
* volume
, off_t block
)
79 CachedBlock::~CachedBlock()
96 block_cache_put(fVolume
->BlockCache(), fBlockNumber
);
103 CachedBlock::SetTo(off_t block
)
106 fBlockNumber
= block
;
107 return fBlock
= (uint8
*)block_cache_get(fVolume
->BlockCache(), block
);
112 CachedBlock::SetToWritable(off_t block
, int32 transactionId
, bool empty
)
115 fBlockNumber
= block
;
118 fBlock
= (uint8
*)block_cache_get_empty(fVolume
->BlockCache(),
119 block
, transactionId
);
121 fBlock
= (uint8
*)block_cache_get_writable(fVolume
->BlockCache(),
122 block
, transactionId
);
129 #endif // CACHED_BLOCK_H