1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

lvmdevices: add --delnotfound to delete entries for missing devices

Used with update: lvmdevices --update --delnotfound.
Removes all devices file entries for which no matching device is found.
This commit is contained in:
David Teigland 2023-07-19 15:04:53 -05:00
parent e3cc3e55c8
commit 7cc414135a
4 changed files with 26 additions and 0 deletions

View File

@ -241,6 +241,16 @@ not grep "$PVID2" $DF
setup_loop_devs setup_loop_devs
rm $DF rm $DF
# test delnotfound
lvmdevices --addpvid "$PVID1"
echo "IDTYPE=sys_wwid IDNAME=naa.123 DEVNAME=/dev/sdx1 PVID=aaa PART=1" >> $DF
echo "IDTYPE=devname IDNAME=/dev/sdy DEVNAME=/dev/sdy PVID=bbb" >> $DF
lvmdevices
lvmdevices --update --delnotfound
not grep PVID=aaa $DF
not grep PVID=bbb $DF
# TODO: add/rem of partitions of same device # TODO: add/rem of partitions of same device
losetup -D losetup -D

View File

@ -52,6 +52,9 @@ arg(deldev_ARG, '\0', "deldev", string_VAL, 0, 0,
"When used alone, --deldev specifies a device name.\n" "When used alone, --deldev specifies a device name.\n"
"When used with --deviceidtype, --deldev specifies a device id.\n") "When used with --deviceidtype, --deldev specifies a device id.\n")
arg(delnotfound_ARG, '\0', "delnotfound", 0, 0, 0,
"Remove devices file entries with no matching device.\n")
arg(addpvid_ARG, '\0', "addpvid", string_VAL, 0, 0, arg(addpvid_ARG, '\0', "addpvid", string_VAL, 0, 0,
"Find a device with the PVID and add the device to the devices file.\n") "Find a device with the PVID and add the device to the devices file.\n")
arg(delpvid_ARG, '\0', "delpvid", string_VAL, 0, 0, arg(delpvid_ARG, '\0', "delpvid", string_VAL, 0, 0,

View File

@ -1445,6 +1445,7 @@ ID: lvmdevices_check
DESC: Check the devices file and report incorrect values. DESC: Check the devices file and report incorrect values.
lvmdevices --update lvmdevices --update
OO: --delnotfound
ID: lvmdevices_update ID: lvmdevices_update
DESC: Update the devices file to fix incorrect values. DESC: Update the devices file to fix incorrect values.

View File

@ -293,6 +293,18 @@ int lvmdevices(struct cmd_context *cmd, int argc, char **argv)
label_scan_invalidate(du->dev); label_scan_invalidate(du->dev);
} }
if (arg_is_set(cmd, delnotfound_ARG)) {
dm_list_iterate_items_safe(du, du2, &cmd->use_devices) {
if (!du->dev) {
log_print("Deleting IDTYPE=%s IDNAME=%s PVID=%s",
idtype_to_str(du->idtype), du->idname ?: ".", du->pvid ?: ".");
dm_list_del(&du->list);
free_du(du);
update_needed++;
}
}
}
if (arg_is_set(cmd, update_ARG)) { if (arg_is_set(cmd, update_ARG)) {
if (update_needed || serial_update_needed || !dm_list_empty(&found_devs)) { if (update_needed || serial_update_needed || !dm_list_empty(&found_devs)) {
if (!device_ids_write(cmd)) if (!device_ids_write(cmd))