2 * Copyright 2001-2010, Haiku Inc. All rights reserved.
3 * This file may be used under the terms of the MIT License.
6 * Janito V. Ferreira Filho
13 #include "Transaction.h"
22 DataStream(Volume
* volume
, ext2_data_stream
* stream
,
26 status_t
FindBlock(off_t offset
, fsblock_t
& block
,
27 uint32
*_count
= NULL
);
28 status_t
Enlarge(Transaction
& transaction
, off_t
& numBlocks
);
29 status_t
Shrink(Transaction
& transaction
, off_t
& numBlocks
);
32 uint32
_BlocksNeeded(off_t end
);
34 status_t
_GetBlock(Transaction
& transaction
, uint32
& block
);
35 status_t
_PrepareBlock(Transaction
& transaction
, uint32
* pos
,
36 uint32
& blockNum
, bool& clear
);
38 status_t
_AddBlocks(Transaction
& transaction
, uint32
* block
,
40 status_t
_AddBlocks(Transaction
& transaction
, uint32
* block
,
41 off_t start
, off_t end
, int recursion
);
43 status_t
_AddForDirectBlocks(Transaction
& transaction
,
45 status_t
_AddForIndirectBlock(Transaction
& transaction
,
47 status_t
_AddForDoubleIndirectBlock(Transaction
& transaction
,
49 status_t
_AddForTripleIndirectBlock(Transaction
& transaction
,
52 status_t
_PerformFree(Transaction
& transaction
);
53 status_t
_MarkBlockForRemoval(Transaction
& transaction
,
56 status_t
_FreeBlocks(Transaction
& transaction
, uint32
* block
,
58 status_t
_FreeBlocks(Transaction
& transaction
, uint32
* block
,
59 off_t start
, off_t end
, bool freeParent
,
62 status_t
_RemoveFromDirectBlocks(Transaction
& transaction
,
64 status_t
_RemoveFromIndirectBlock(Transaction
& transaction
,
66 status_t
_RemoveFromDoubleIndirectBlock(Transaction
& transaction
,
68 status_t
_RemoveFromTripleIndirectBlock(Transaction
& transaction
,
72 const uint32 kBlockSize
;
73 const uint32 kIndirectsPerBlock
;
74 const uint32 kIndirectsPerBlock2
;
75 const uint32 kIndirectsPerBlock3
;
77 const uint32 kMaxDirect
;
78 const uint32 kMaxIndirect
;
79 const uint32 kMaxDoubleIndirect
;
82 ext2_data_stream
* fStream
;
86 fsblock_t fAllocatedPos
;
93 uint32 fRemovedBlocks
;
97 #endif // DATASTREAM_H