Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/geom/linux_lvm/g_linux_lvm.h
39476 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright (c) 2008 Andrew Thompson <[email protected]>
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26
* SUCH DAMAGE.
27
*/
28
29
#define G_LLVM_DEBUG(lvl, ...) \
30
_GEOM_DEBUG("GEOM_LINUX_LVM", g_llvm_debug, (lvl), NULL, __VA_ARGS__)
31
32
#define G_LLVM_CLASS_NAME "LINUX_LVM"
33
#define G_LLVM_NAMELEN 128
34
#define G_LLVM_UUIDLEN 40
35
#define G_LLVM_MAGIC "\040\114\126\115\062\040\170\133" \
36
"\065\101\045\162\060\116\052\076"
37
38
struct g_llvm_label {
39
uint64_t ll_sector;
40
uint32_t ll_crc;
41
uint32_t ll_offset;
42
char ll_uuid[G_LLVM_UUIDLEN];
43
uint64_t ll_size;
44
uint64_t ll_pestart;
45
uint64_t ll_md_offset;
46
uint64_t ll_md_size;
47
};
48
49
struct g_llvm_metadata {
50
uint32_t md_csum;
51
uint32_t md_version;
52
uint64_t md_start;
53
uint64_t md_size;
54
uint64_t md_reloffset;
55
uint64_t md_relsize;
56
struct g_llvm_vg *md_vg;
57
};
58
59
struct g_llvm_lv {
60
LIST_ENTRY(g_llvm_lv) lv_next;
61
struct g_llvm_vg *lv_vg;
62
char lv_name[G_LLVM_NAMELEN];
63
char lv_uuid[G_LLVM_UUIDLEN];
64
int lv_sgcount;
65
int lv_sgactive;
66
struct g_provider *lv_gprov;
67
int lv_extentcount;
68
LIST_HEAD(, g_llvm_segment) lv_segs;
69
int lv_numsegs;
70
struct g_llvm_segment *lv_firstsg;
71
};
72
73
struct g_llvm_pv {
74
LIST_ENTRY(g_llvm_pv) pv_next;
75
struct g_llvm_vg *pv_vg;
76
char pv_name[G_LLVM_NAMELEN];
77
char pv_uuid[G_LLVM_UUIDLEN];
78
size_t pv_size;
79
off_t pv_start;
80
int pv_count;
81
struct g_provider *pv_gprov;
82
struct g_consumer *pv_gcons;
83
};
84
85
struct g_llvm_segment {
86
LIST_ENTRY(g_llvm_segment) sg_next;
87
int sg_start;
88
int sg_end;
89
int sg_count;
90
char sg_pvname[G_LLVM_NAMELEN];
91
struct g_llvm_pv *sg_pv;
92
int sg_pvstart;
93
off_t sg_pvoffset;
94
};
95
96
struct g_llvm_vg {
97
LIST_ENTRY(g_llvm_vg) vg_next;
98
char vg_name[G_LLVM_NAMELEN];
99
char vg_uuid[G_LLVM_UUIDLEN];
100
size_t vg_extentsize;
101
int vg_sectorsize;
102
struct g_geom *vg_geom;
103
LIST_HEAD(, g_llvm_pv) vg_pvs;
104
LIST_HEAD(, g_llvm_lv) vg_lvs;
105
};
106
107