diff --git a/WHATS_NEW b/WHATS_NEW index b21702ce0..e05fae2cc 100644 --- a/WHATS_NEW +++ b/WHATS_NEW @@ -1,5 +1,6 @@ Version 2.02.174 - ================================= + Always clear cached bootloaderarea when wiping label e.g. in pvcreate. Disallow --bootloaderareasize with pvcreate --restorefile. Fix lvmlockd check for running lock managers during lock adoption. Add --withgeneralpreamble and --withlocalpreamble to lvmconfig. diff --git a/lib/label/label.c b/lib/label/label.c index c5f488451..0e9951767 100644 --- a/lib/label/label.c +++ b/lib/label/label.c @@ -202,6 +202,7 @@ int label_remove(struct device *dev) int wipe; struct labeller_i *li; struct label_header *lh; + struct lvmcache_info *info; memset(buf, 0, LABEL_SIZE); @@ -245,8 +246,13 @@ int label_remove(struct device *dev) if (wipe) { log_very_verbose("%s: Wiping label at sector %" PRIu64, dev_name(dev), sector); - if (!dev_write(dev, sector << SECTOR_SHIFT, LABEL_SIZE, + if (dev_write(dev, sector << SECTOR_SHIFT, LABEL_SIZE, buf)) { + /* Also remove the PV record from cache. */ + info = lvmcache_info_from_pvid(dev->pvid, dev, 0); + if (info) + lvmcache_del(info); + } else { log_error("Failed to remove label from %s at " "sector %" PRIu64, dev_name(dev), sector); diff --git a/tools/toollib.c b/tools/toollib.c index c2807b8dc..1799bc91c 100644 --- a/tools/toollib.c +++ b/tools/toollib.c @@ -5398,7 +5398,6 @@ int pvcreate_each_device(struct cmd_context *cmd, struct pvcreate_prompt *prompt, *prompt2; struct physical_volume *pv; struct volume_group *orphan_vg; - struct lvmcache_info *info; struct dm_list remove_duplicates; struct dm_list arg_sort; struct pv_list *pvl; @@ -5811,10 +5810,6 @@ do_command: continue; } - info = lvmcache_info_from_pvid(pd->pvid, pd->dev, 0); - if (info) - lvmcache_del(info); - if (!lvmetad_pv_gone_by_dev(pd->dev)) { log_error("Failed to remove PV %s from lvmetad.", pd->name); dm_list_move(&pp->arg_fail, &pd->list);