mirror of
git://sourceware.org/git/lvm2.git
synced 2025-03-10 16:58:47 +03:00
lvmetad: Flush a VG if it goes completely missing due to pv_found.
This commit is contained in:
parent
89e7d81d92
commit
a832120521
@ -859,6 +859,7 @@ static response pv_found(lvmetad_state *s, request r)
|
||||
const char *pvid = daemon_request_str(r, "pvmeta/id", NULL);
|
||||
const char *vgname = daemon_request_str(r, "vgname", NULL);
|
||||
const char *vgid = daemon_request_str(r, "metadata/id", NULL);
|
||||
const char *vgid_old;
|
||||
struct dm_config_node *pvmeta = dm_config_find_node(r.cft->root, "pvmeta");
|
||||
uint64_t device;
|
||||
struct dm_config_tree *cft, *pvmeta_old_dev = NULL, *pvmeta_old_pvid = NULL;
|
||||
@ -880,6 +881,12 @@ static response pv_found(lvmetad_state *s, request r)
|
||||
if ((old = dm_hash_lookup_binary(s->device_to_pvid, &device, sizeof(device)))) {
|
||||
pvmeta_old_dev = dm_hash_lookup(s->pvid_to_pvmeta, old);
|
||||
dm_hash_remove(s->pvid_to_pvmeta, old);
|
||||
|
||||
if (vgid_old = dm_hash_lookup(s->pvid_to_vgid, pvid)) {
|
||||
lock_vg(s, vgid_old);
|
||||
vg_remove_if_missing(s, vgid_old, 1);
|
||||
unlock_vg(s, vgid_old);
|
||||
}
|
||||
}
|
||||
pvmeta_old_pvid = dm_hash_lookup(s->pvid_to_pvmeta, pvid);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user