5ef812d6f45bb545d2b7f9b9b0b8c6ab2d1bfaf1
[tpg/acess2.git] / KernelLand / Modules / Storage / LVM / lvm_int.h
1 /*
2  * Acess2 Logical Volume Manager
3  * - By John Hodge (thePowersGang)
4  *
5  * lvm_int.h
6  * - Internal definitions
7  */
8 #ifndef _LVM_LVM_INT_H_
9 #define _LVM_LVM_INT_H_
10
11 #include "include/lvm.h"
12 #include "lvm.h"
13 #include <vfs.h>
14
15 typedef struct sLVM_SubVolume   tLVM_SubVolume;
16
17 enum eLVM_BackType
18 {
19         LVM_BACKING_VFS,
20         LVM_BACKING_PTRS
21 };
22
23 struct sLVM_Vol
24 {
25         tLVM_Vol        *Next;
26         
27         tVFS_Node       DirNode;
28         tVFS_Node       VolNode;
29
30         void    *Ptr;
31         const tLVM_VolType      *Type;
32
33         size_t  BlockSize;
34         Uint64  BlockCount;
35         
36          int    nSubVolumes;
37         tLVM_SubVolume  **SubVolumes;
38
39         char    Name[];
40 };
41
42 struct sLVM_SubVolume
43 {
44         tLVM_Vol        *Vol;
45         
46         tVFS_Node       Node;
47
48         // Note: Only for a simple volume
49         Uint64  FirstBlock;
50         Uint64  BlockCount;
51
52         char    Name[];
53 };
54
55 extern tVFS_NodeType    gLVM_SubVolNodeType;
56 extern tVFS_NodeType    gLVM_VolNodeType;
57
58 extern tLVM_Vol *gpLVM_FirstVolume;
59 extern tLVM_Vol *gpLVM_LastVolume;
60
61 #endif
62

UCC git Repository :: git.ucc.asn.au