@@ -61,6 +61,218 @@ GMutex global_config_lock;
6161gchar * global_config_str = NULL ;
6262gchar * global_devices_str = NULL ;
6363
64+ BDLVMPVdata * bd_lvm_pvdata_copy (BDLVMPVdata * data ) {
65+ if (data == NULL )
66+ return NULL ;
67+
68+ BDLVMPVdata * new_data = g_new0 (BDLVMPVdata , 1 );
69+
70+ new_data -> pv_name = g_strdup (data -> pv_name );
71+ new_data -> pv_uuid = g_strdup (data -> pv_uuid );
72+ new_data -> pv_free = data -> pv_free ;
73+ new_data -> pv_size = data -> pv_size ;
74+ new_data -> pe_start = data -> pe_start ;
75+ new_data -> vg_name = g_strdup (data -> vg_name );
76+ new_data -> vg_uuid = g_strdup (data -> vg_uuid );
77+ new_data -> vg_size = data -> vg_size ;
78+ new_data -> vg_free = data -> vg_free ;
79+ new_data -> vg_extent_size = data -> vg_extent_size ;
80+ new_data -> vg_extent_count = data -> vg_extent_count ;
81+ new_data -> vg_free_count = data -> vg_free_count ;
82+ new_data -> vg_pv_count = data -> vg_pv_count ;
83+ new_data -> pv_tags = g_strdupv (data -> pv_tags );
84+ new_data -> missing = data -> missing ;
85+
86+ return new_data ;
87+ }
88+
89+ void bd_lvm_pvdata_free (BDLVMPVdata * data ) {
90+ if (data == NULL )
91+ return ;
92+
93+ g_free (data -> pv_name );
94+ g_free (data -> pv_uuid );
95+ g_free (data -> vg_name );
96+ g_free (data -> vg_uuid );
97+ g_strfreev (data -> pv_tags );
98+ g_free (data );
99+ }
100+
101+ BDLVMVGdata * bd_lvm_vgdata_copy (BDLVMVGdata * data ) {
102+ if (data == NULL )
103+ return NULL ;
104+
105+ BDLVMVGdata * new_data = g_new0 (BDLVMVGdata , 1 );
106+
107+ new_data -> name = g_strdup (data -> name );
108+ new_data -> uuid = g_strdup (data -> uuid );
109+ new_data -> size = data -> size ;
110+ new_data -> free = data -> free ;
111+ new_data -> extent_size = data -> extent_size ;
112+ new_data -> extent_count = data -> extent_count ;
113+ new_data -> free_count = data -> free_count ;
114+ new_data -> pv_count = data -> pv_count ;
115+ new_data -> vg_tags = g_strdupv (data -> vg_tags );
116+ new_data -> exported = data -> exported ;
117+ return new_data ;
118+ }
119+
120+ void bd_lvm_vgdata_free (BDLVMVGdata * data ) {
121+ if (data == NULL )
122+ return ;
123+
124+ g_free (data -> name );
125+ g_free (data -> uuid );
126+ g_strfreev (data -> vg_tags );
127+ g_free (data );
128+ }
129+
130+ BDLVMSEGdata * bd_lvm_segdata_copy (BDLVMSEGdata * data ) {
131+ if (data == NULL )
132+ return NULL ;
133+
134+ BDLVMSEGdata * new_data = g_new0 (BDLVMSEGdata , 1 );
135+
136+ new_data -> size_pe = data -> size_pe ;
137+ new_data -> pv_start_pe = data -> pv_start_pe ;
138+ new_data -> pvdev = g_strdup (data -> pvdev );
139+ return new_data ;
140+ }
141+
142+ void bd_lvm_segdata_free (BDLVMSEGdata * data ) {
143+ if (data == NULL )
144+ return ;
145+
146+ g_free (data -> pvdev );
147+ g_free (data );
148+ }
149+
150+ static BDLVMSEGdata * * copy_segs (BDLVMSEGdata * * segs ) {
151+ int len ;
152+ BDLVMSEGdata * * new_segs ;
153+
154+ if (segs == NULL )
155+ return NULL ;
156+
157+ for (len = 0 ; segs [len ]; len ++ )
158+ ;
159+
160+ new_segs = g_new0 (BDLVMSEGdata * , len + 1 );
161+ for (int i = 0 ; i < len ; i ++ )
162+ new_segs [i ] = bd_lvm_segdata_copy (segs [i ]);
163+
164+ return new_segs ;
165+ }
166+
167+ static void free_segs (BDLVMSEGdata * * segs ) {
168+ if (segs == NULL )
169+ return ;
170+
171+ for (int i = 0 ; segs [i ]; i ++ )
172+ bd_lvm_segdata_free (segs [i ]);
173+ (g_free ) (segs );
174+ }
175+
176+ BDLVMLVdata * bd_lvm_lvdata_copy (BDLVMLVdata * data ) {
177+ if (data == NULL )
178+ return NULL ;
179+
180+ BDLVMLVdata * new_data = g_new0 (BDLVMLVdata , 1 );
181+
182+ new_data -> lv_name = g_strdup (data -> lv_name );
183+ new_data -> vg_name = g_strdup (data -> vg_name );
184+ new_data -> uuid = g_strdup (data -> uuid );
185+ new_data -> size = data -> size ;
186+ new_data -> attr = g_strdup (data -> attr );
187+ new_data -> segtype = g_strdup (data -> segtype );
188+ new_data -> origin = g_strdup (data -> origin );
189+ new_data -> pool_lv = g_strdup (data -> pool_lv );
190+ new_data -> data_lv = g_strdup (data -> data_lv );
191+ new_data -> metadata_lv = g_strdup (data -> metadata_lv );
192+ new_data -> roles = g_strdup (data -> roles );
193+ new_data -> move_pv = g_strdup (data -> move_pv );
194+ new_data -> data_percent = data -> data_percent ;
195+ new_data -> metadata_percent = data -> metadata_percent ;
196+ new_data -> copy_percent = data -> copy_percent ;
197+ new_data -> lv_tags = g_strdupv (data -> lv_tags );
198+ new_data -> data_lvs = g_strdupv (data -> data_lvs );
199+ new_data -> metadata_lvs = g_strdupv (data -> metadata_lvs );
200+ new_data -> segs = copy_segs (data -> segs );
201+ return new_data ;
202+ }
203+
204+ void bd_lvm_lvdata_free (BDLVMLVdata * data ) {
205+ if (data == NULL )
206+ return ;
207+
208+ g_free (data -> lv_name );
209+ g_free (data -> vg_name );
210+ g_free (data -> uuid );
211+ g_free (data -> attr );
212+ g_free (data -> segtype );
213+ g_free (data -> origin );
214+ g_free (data -> pool_lv );
215+ g_free (data -> data_lv );
216+ g_free (data -> metadata_lv );
217+ g_free (data -> roles );
218+ g_free (data -> move_pv );
219+ g_strfreev (data -> lv_tags );
220+ g_strfreev (data -> data_lvs );
221+ g_strfreev (data -> metadata_lvs );
222+ free_segs (data -> segs );
223+ g_free (data );
224+ }
225+
226+ BDLVMVDOPooldata * bd_lvm_vdopooldata_copy (BDLVMVDOPooldata * data ) {
227+ if (data == NULL )
228+ return NULL ;
229+
230+ BDLVMVDOPooldata * new_data = g_new0 (BDLVMVDOPooldata , 1 );
231+
232+ new_data -> operating_mode = data -> operating_mode ;
233+ new_data -> compression_state = data -> compression_state ;
234+ new_data -> index_state = data -> index_state ;
235+ new_data -> write_policy = data -> write_policy ;
236+ new_data -> used_size = data -> used_size ;
237+ new_data -> saving_percent = data -> saving_percent ;
238+ new_data -> index_memory_size = data -> index_memory_size ;
239+ new_data -> deduplication = data -> deduplication ;
240+ new_data -> compression = data -> compression ;
241+ return new_data ;
242+ }
243+
244+ void bd_lvm_vdopooldata_free (BDLVMVDOPooldata * data ) {
245+ if (data == NULL )
246+ return ;
247+
248+ g_free (data );
249+ }
250+
251+ BDLVMCacheStats * bd_lvm_cache_stats_copy (BDLVMCacheStats * data ) {
252+ if (data == NULL )
253+ return NULL ;
254+
255+ BDLVMCacheStats * new = g_new0 (BDLVMCacheStats , 1 );
256+
257+ new -> block_size = data -> block_size ;
258+ new -> cache_size = data -> cache_size ;
259+ new -> cache_used = data -> cache_used ;
260+ new -> md_block_size = data -> md_block_size ;
261+ new -> md_size = data -> md_size ;
262+ new -> md_used = data -> md_used ;
263+ new -> read_hits = data -> read_hits ;
264+ new -> read_misses = data -> read_misses ;
265+ new -> write_hits = data -> write_hits ;
266+ new -> write_misses = data -> write_misses ;
267+ new -> mode = data -> mode ;
268+
269+ return new ;
270+ }
271+
272+ void bd_lvm_cache_stats_free (BDLVMCacheStats * data ) {
273+ g_free (data );
274+ }
275+
64276/**
65277 * bd_lvm_is_supported_pe_size:
66278 * @size: size (in bytes) to test
0 commit comments