Skip to content

Commit a667339

Browse files
vojtechtrefnyclaude
andcommitted
lvm: Move data copy and free functions to lvm-common.c
The copy/free functions for BDLVMPVdata, BDLVMVGdata, BDLVMLVdata, BDLVMSEGdata, BDLVMVDOPooldata and BDLVMCacheStats were duplicated in both lvm.c and lvm-dbus.c. Move them to lvm-common.c which is compiled into both plugin libraries. This also fixes the build of lvm-dbus.c which used copy_segs/free_segs without defining them. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1792658 commit a667339

3 files changed

Lines changed: 212 additions & 354 deletions

File tree

src/plugins/lvm/lvm-common.c

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,218 @@ GMutex global_config_lock;
6161
gchar *global_config_str = NULL;
6262
gchar *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

src/plugins/lvm/lvm-dbus.c

Lines changed: 0 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -80,147 +80,6 @@ GQuark bd_lvm_error_quark (void)
8080
return g_quark_from_static_string ("g-bd-lvm-error-quark");
8181
}
8282

83-
BDLVMPVdata* bd_lvm_pvdata_copy (BDLVMPVdata *data) {
84-
if (data == NULL)
85-
return NULL;
86-
87-
BDLVMPVdata *new_data = g_new0 (BDLVMPVdata, 1);
88-
89-
new_data->pv_name = g_strdup (data->pv_name);
90-
new_data->pv_uuid = g_strdup (data->pv_uuid);
91-
new_data->pv_free = data->pv_free;
92-
new_data->pv_size = data->pv_size;
93-
new_data->pe_start = data->pe_start;
94-
new_data->vg_name = g_strdup (data->vg_name);
95-
new_data->vg_uuid = g_strdup (data->vg_uuid);
96-
new_data->vg_size = data->vg_size;
97-
new_data->vg_free = data->vg_free;
98-
new_data->vg_extent_size = data->vg_extent_size;
99-
new_data->vg_extent_count = data->vg_extent_count;
100-
new_data->vg_free_count = data->vg_free_count;
101-
new_data->vg_pv_count = data->vg_pv_count;
102-
new_data->pv_tags = g_strdupv (data->pv_tags);
103-
new_data->missing = data->missing;
104-
105-
return new_data;
106-
}
107-
108-
void bd_lvm_pvdata_free (BDLVMPVdata *data) {
109-
if (data == NULL)
110-
return;
111-
112-
g_free (data->pv_name);
113-
g_free (data->pv_uuid);
114-
g_free (data->vg_name);
115-
g_free (data->vg_uuid);
116-
g_strfreev (data->pv_tags);
117-
g_free (data);
118-
}
119-
120-
BDLVMVGdata* bd_lvm_vgdata_copy (BDLVMVGdata *data) {
121-
if (data == NULL)
122-
return NULL;
123-
124-
BDLVMVGdata *new_data = g_new0 (BDLVMVGdata, 1);
125-
126-
new_data->name = g_strdup (data->name);
127-
new_data->uuid = g_strdup (data->uuid);
128-
new_data->size = data->size;
129-
new_data->free = data->free;
130-
new_data->extent_size = data->extent_size;
131-
new_data->extent_count = data->extent_count;
132-
new_data->free_count = data->free_count;
133-
new_data->pv_count = data->pv_count;
134-
new_data->vg_tags = g_strdupv (data->vg_tags);
135-
new_data->exported = data->exported;
136-
return new_data;
137-
}
138-
139-
void bd_lvm_vgdata_free (BDLVMVGdata *data) {
140-
if (data == NULL)
141-
return;
142-
143-
g_free (data->name);
144-
g_free (data->uuid);
145-
g_strfreev (data->vg_tags);
146-
g_free (data);
147-
}
148-
149-
BDLVMLVdata* bd_lvm_lvdata_copy (BDLVMLVdata *data) {
150-
if (data == NULL)
151-
return NULL;
152-
153-
BDLVMLVdata *new_data = g_new0 (BDLVMLVdata, 1);
154-
155-
new_data->lv_name = g_strdup (data->lv_name);
156-
new_data->vg_name = g_strdup (data->vg_name);
157-
new_data->uuid = g_strdup (data->uuid);
158-
new_data->size = data->size;
159-
new_data->attr = g_strdup (data->attr);
160-
new_data->segtype = g_strdup (data->segtype);
161-
new_data->origin = g_strdup (data->origin);
162-
new_data->pool_lv = g_strdup (data->pool_lv);
163-
new_data->data_lv = g_strdup (data->data_lv);
164-
new_data->metadata_lv = g_strdup (data->metadata_lv);
165-
new_data->roles = g_strdup (data->roles);
166-
new_data->move_pv = g_strdup (data->move_pv);
167-
new_data->data_percent = data->data_percent;
168-
new_data->metadata_percent = data->metadata_percent;
169-
new_data->copy_percent = data->copy_percent;
170-
new_data->lv_tags = g_strdupv (data->lv_tags);
171-
new_data->data_lvs = g_strdupv (data->data_lvs);
172-
new_data->metadata_lvs = g_strdupv (data->metadata_lvs);
173-
new_data->segs = copy_segs (data->segs);
174-
return new_data;
175-
}
176-
177-
void bd_lvm_lvdata_free (BDLVMLVdata *data) {
178-
if (data == NULL)
179-
return;
180-
181-
g_free (data->lv_name);
182-
g_free (data->vg_name);
183-
g_free (data->uuid);
184-
g_free (data->attr);
185-
g_free (data->segtype);
186-
g_free (data->origin);
187-
g_free (data->pool_lv);
188-
g_free (data->data_lv);
189-
g_free (data->metadata_lv);
190-
g_free (data->roles);
191-
g_free (data->move_pv);
192-
g_strfreev (data->lv_tags);
193-
g_strfreev (data->data_lvs);
194-
g_strfreev (data->metadata_lvs);
195-
free_segs (data->segs);
196-
g_free (data);
197-
}
198-
199-
BDLVMCacheStats* bd_lvm_cache_stats_copy (BDLVMCacheStats *data) {
200-
if (data == NULL)
201-
return NULL;
202-
203-
BDLVMCacheStats *new = g_new0 (BDLVMCacheStats, 1);
204-
205-
new->block_size = data->block_size;
206-
new->cache_size = data->cache_size;
207-
new->cache_used = data->cache_used;
208-
new->md_block_size = data->md_block_size;
209-
new->md_size = data->md_size;
210-
new->md_used = data->md_used;
211-
new->read_hits = data->read_hits;
212-
new->read_misses = data->read_misses;
213-
new->write_hits = data->write_hits;
214-
new->write_misses = data->write_misses;
215-
new->mode = data->mode;
216-
217-
return new;
218-
}
219-
220-
void bd_lvm_cache_stats_free (BDLVMCacheStats *data) {
221-
g_free (data);
222-
}
223-
22483
static gboolean setup_dbus_connection (GError **error) {
22584
gchar *addr = NULL;
22685

0 commit comments

Comments
 (0)