summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-05-03 11:46:28 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-06-20 11:33:42 +0200
commit8cfc385491484e71d66e5991e09c3d0a47570a13 (patch)
treedcdfe6d9c87669289a8ac2f334eaf566353018bf
parent31aaa3be71597ec53262177bea76365605e9199f (diff)
downloadlvm2-8cfc385491484e71d66e5991e09c3d0a47570a13.tar.gz
toollib: make it possible to also process internal VGs, add 'include_internal' switch to process_each_vg fn
The lvm fullreport works per VG and as such, the vg, lv, pv, seg and pvseg subreport is done for each VG. However, if the PV is not part of any VG yet, we still want to display pv and pvseg subreports for these "orphan" PVs - so enable this for lvm fullreport's process_each_vg call.
-rw-r--r--WHATS_NEW1
-rw-r--r--tools/lvcreate.c2
-rw-r--r--tools/lvrename.c2
-rw-r--r--tools/lvresize.c2
-rw-r--r--tools/polldaemon.c4
-rw-r--r--tools/pvscan.c2
-rw-r--r--tools/reporter.c10
-rw-r--r--tools/toollib.c6
-rw-r--r--tools/toollib.h1
-rw-r--r--tools/vgcfgbackup.c2
-rw-r--r--tools/vgchange.c2
-rw-r--r--tools/vgck.c2
-rw-r--r--tools/vgconvert.c2
-rw-r--r--tools/vgdisplay.c2
-rw-r--r--tools/vgexport.c2
-rw-r--r--tools/vgextend.c2
-rw-r--r--tools/vgimport.c2
-rw-r--r--tools/vgreduce.c2
-rw-r--r--tools/vgremove.c2
-rw-r--r--tools/vgrename.c2
-rw-r--r--tools/vgscan.c2
21 files changed, 29 insertions, 25 deletions
diff --git a/WHATS_NEW b/WHATS_NEW
index 01d6bbcf3..edbc0f3d5 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
Version 2.02.158 -
=================================
+ Make it possible to iterate over internal 'orphan' VGs in process_each_vg fn.
Make -S|--select option groupable that allows this option to be repeated.
Make -O|--sort option groupable that allows this option to be repeated.
Add --configreport option to select report for which next options are applied.
diff --git a/tools/lvcreate.c b/tools/lvcreate.c
index fb28dc538..88518d27b 100644
--- a/tools/lvcreate.c
+++ b/tools/lvcreate.c
@@ -1564,7 +1564,7 @@ int lvcreate(struct cmd_context *cmd, int argc, char **argv)
handle->custom_handle = &pp;
- ret = process_each_vg(cmd, 0, NULL, lp.vg_name, NULL, READ_FOR_UPDATE, handle,
+ ret = process_each_vg(cmd, 0, NULL, lp.vg_name, NULL, READ_FOR_UPDATE, 0, handle,
&_lvcreate_single);
_destroy_lvcreate_params(&lp);
diff --git a/tools/lvrename.c b/tools/lvrename.c
index 4dfcda23e..74248ee91 100644
--- a/tools/lvrename.c
+++ b/tools/lvrename.c
@@ -217,7 +217,7 @@ int lvrename(struct cmd_context *cmd, int argc, char **argv)
handle->custom_handle = &lp;
- ret = process_each_vg(cmd, 0, NULL, vg_name, NULL, READ_FOR_UPDATE, handle,
+ ret = process_each_vg(cmd, 0, NULL, vg_name, NULL, READ_FOR_UPDATE, 0, handle,
_lvrename_single);
destroy_processing_handle(cmd, handle);
diff --git a/tools/lvresize.c b/tools/lvresize.c
index 05e386f32..38ad98ffd 100644
--- a/tools/lvresize.c
+++ b/tools/lvresize.c
@@ -223,7 +223,7 @@ int lvresize(struct cmd_context *cmd, int argc, char **argv)
handle->custom_handle = &lp;
- ret = process_each_vg(cmd, 0, NULL, lp.vg_name, NULL, READ_FOR_UPDATE, handle,
+ ret = process_each_vg(cmd, 0, NULL, lp.vg_name, NULL, READ_FOR_UPDATE, 0, handle,
&_lvresize_single);
destroy_processing_handle(cmd, handle);
diff --git a/tools/polldaemon.c b/tools/polldaemon.c
index e12a69419..2b64c4ece 100644
--- a/tools/polldaemon.c
+++ b/tools/polldaemon.c
@@ -364,7 +364,7 @@ static void _poll_for_all_vgs(struct cmd_context *cmd,
while (1) {
parms->outstanding_count = 0;
- process_each_vg(cmd, 0, NULL, NULL, NULL, READ_FOR_UPDATE, handle, _poll_vg);
+ process_each_vg(cmd, 0, NULL, NULL, NULL, READ_FOR_UPDATE, 0, handle, _poll_vg);
if (!parms->outstanding_count)
break;
if (parms->interval)
@@ -508,7 +508,7 @@ static void _lvmpolld_poll_for_all_vgs(struct cmd_context *cmd,
handle->custom_handle = &lpdp;
- process_each_vg(cmd, 0, NULL, NULL, NULL, 0, handle, _lvmpolld_init_poll_vg);
+ process_each_vg(cmd, 0, NULL, NULL, NULL, 0, 0, handle, _lvmpolld_init_poll_vg);
first = dm_list_first(&lpdp.idls);
diff --git a/tools/pvscan.c b/tools/pvscan.c
index db678d1b7..a1f5ef394 100644
--- a/tools/pvscan.c
+++ b/tools/pvscan.c
@@ -287,7 +287,7 @@ static int _pvscan_autoactivate(struct cmd_context *cmd, struct pvscan_aa_params
dev_cache_full_scan(cmd->full_filter);
- ret = process_each_vg(cmd, 0, NULL, NULL, vgnames, 0, handle, _pvscan_autoactivate_single);
+ ret = process_each_vg(cmd, 0, NULL, NULL, vgnames, 0, 0, handle, _pvscan_autoactivate_single);
destroy_processing_handle(cmd, handle);
diff --git a/tools/reporter.c b/tools/reporter.c
index 1fcb33862..0509c88c9 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -1084,8 +1084,8 @@ static int _do_report(struct cmd_context *cmd, struct processing_handle *handle,
if (args->full_report_vg)
r = _report_all_in_vg(cmd, handle, args->full_report_vg, VGS, lv_info_needed, lv_segment_status_needed);
else
- r = process_each_vg(cmd, args->argc, args->argv, NULL, NULL, 0,
- handle, &_vgs_single);
+ r = process_each_vg(cmd, args->argc, args->argv, NULL, NULL,
+ 0, 0, handle, &_vgs_single);
break;
case LABEL:
r = process_each_label(cmd, args->argc, args->argv,
@@ -1101,7 +1101,7 @@ static int _do_report(struct cmd_context *cmd, struct processing_handle *handle,
handle, &_pvs_single);
else
r = process_each_vg(cmd, args->argc, args->argv, NULL, NULL,
- 0, handle, &_pvs_in_vg);
+ 0, 0, handle, &_pvs_in_vg);
}
break;
case SEGS:
@@ -1128,7 +1128,7 @@ static int _do_report(struct cmd_context *cmd, struct processing_handle *handle,
&_pvsegs_single);
else
r = process_each_vg(cmd, args->argc, args->argv, NULL, NULL,
- 0, handle, &_pvsegs_in_vg);
+ 0, 0, handle, &_pvsegs_in_vg);
}
break;
case FULL:
@@ -1367,7 +1367,7 @@ static int _report(struct cmd_context *cmd, int argc, char **argv, report_type_t
if (single_args->report_type == FULL) {
handle->custom_handle = &args;
- r = process_each_vg(cmd, argc, argv, NULL, NULL, 0, handle, &_full_report_single);
+ r = process_each_vg(cmd, argc, argv, NULL, NULL, 0, 1, handle, &_full_report_single);
} else
r = _do_report(cmd, handle, &args, single_args);
diff --git a/tools/toollib.c b/tools/toollib.c
index e67e47abb..925157d0b 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -1875,7 +1875,8 @@ static int _process_vgnameid_list(struct cmd_context *cmd, uint32_t read_flags,
skip = 0;
notfound = 0;
- if (vg_uuid && !id_write_format((const struct id*)vg_uuid, uuid, sizeof(uuid)))
+ if (vg_uuid && !is_orphan_vg(vg_name) &&
+ !id_write_format((const struct id*)vg_uuid, uuid, sizeof(uuid)))
stack;
log_very_verbose("Processing VG %s %s", vg_name, vg_uuid ? uuid : "");
@@ -2091,6 +2092,7 @@ int process_each_vg(struct cmd_context *cmd,
const char *one_vgname,
struct dm_list *use_vgnames,
uint32_t read_flags,
+ int include_internal,
struct processing_handle *handle,
process_single_vg_fn_t process_single_vg)
{
@@ -2158,7 +2160,7 @@ int process_each_vg(struct cmd_context *cmd,
*/
log_debug("Get list of VGs on system");
- if (!get_vgnameids(cmd, &vgnameids_on_system, NULL, 0)) {
+ if (!get_vgnameids(cmd, &vgnameids_on_system, NULL, include_internal)) {
ret_max = ECMD_FAILED;
goto_out;
}
diff --git a/tools/toollib.h b/tools/toollib.h
index 8cd9087e6..179efe551 100644
--- a/tools/toollib.h
+++ b/tools/toollib.h
@@ -106,6 +106,7 @@ int process_each_vg(struct cmd_context *cmd,
const char *one_vgname,
struct dm_list *use_vgnames,
uint32_t flags,
+ int include_internal,
struct processing_handle *handle,
process_single_vg_fn_t process_single_vg);
diff --git a/tools/vgcfgbackup.c b/tools/vgcfgbackup.c
index c47c1ef72..34fe08f65 100644
--- a/tools/vgcfgbackup.c
+++ b/tools/vgcfgbackup.c
@@ -94,7 +94,7 @@ int vgcfgbackup(struct cmd_context *cmd, int argc, char **argv)
init_pvmove(1);
- ret = process_each_vg(cmd, argc, argv, NULL, NULL, READ_ALLOW_INCONSISTENT,
+ ret = process_each_vg(cmd, argc, argv, NULL, NULL, READ_ALLOW_INCONSISTENT, 0,
handle, &vg_backup_single);
dm_free(last_filename);
diff --git a/tools/vgchange.c b/tools/vgchange.c
index bbd9e1f7a..4f6d847c4 100644
--- a/tools/vgchange.c
+++ b/tools/vgchange.c
@@ -1216,7 +1216,7 @@ int vgchange(struct cmd_context *cmd, int argc, char **argv)
if (arg_is_set(cmd, lockstart_ARG) || arg_is_set(cmd, lockstop_ARG))
flags |= READ_ALLOW_EXPORTED;
- ret = process_each_vg(cmd, argc, argv, NULL, NULL, flags, NULL, &vgchange_single);
+ ret = process_each_vg(cmd, argc, argv, NULL, NULL, flags, 0, NULL, &vgchange_single);
/* Wait for lock-start ops that were initiated in vgchange_lockstart. */
diff --git a/tools/vgck.c b/tools/vgck.c
index 27a1d003e..54bc9d649 100644
--- a/tools/vgck.c
+++ b/tools/vgck.c
@@ -38,6 +38,6 @@ static int vgck_single(struct cmd_context *cmd __attribute__((unused)),
int vgck(struct cmd_context *cmd, int argc, char **argv)
{
lvmetad_make_unused(cmd);
- return process_each_vg(cmd, argc, argv, NULL, NULL, 0, NULL,
+ return process_each_vg(cmd, argc, argv, NULL, NULL, 0, 0, NULL,
&vgck_single);
}
diff --git a/tools/vgconvert.c b/tools/vgconvert.c
index 6ae675f6d..846db0550 100644
--- a/tools/vgconvert.c
+++ b/tools/vgconvert.c
@@ -181,6 +181,6 @@ int vgconvert(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
}
- return process_each_vg(cmd, argc, argv, NULL, NULL, READ_FOR_UPDATE, NULL,
+ return process_each_vg(cmd, argc, argv, NULL, NULL, READ_FOR_UPDATE, 0, NULL,
&vgconvert_single);
}
diff --git a/tools/vgdisplay.c b/tools/vgdisplay.c
index c805e68eb..e9482df8b 100644
--- a/tools/vgdisplay.c
+++ b/tools/vgdisplay.c
@@ -89,7 +89,7 @@ int vgdisplay(struct cmd_context *cmd, int argc, char **argv)
}
**********/
- return process_each_vg(cmd, argc, argv, NULL, NULL, 0, NULL,
+ return process_each_vg(cmd, argc, argv, NULL, NULL, 0, 0, NULL,
vgdisplay_single);
/******** FIXME Need to count number processed
diff --git a/tools/vgexport.c b/tools/vgexport.c
index afe9a14f6..592e1457f 100644
--- a/tools/vgexport.c
+++ b/tools/vgexport.c
@@ -80,6 +80,6 @@ int vgexport(struct cmd_context *cmd, int argc, char **argv)
return EINVALID_CMD_LINE;
}
- return process_each_vg(cmd, argc, argv, NULL, NULL, READ_FOR_UPDATE, NULL,
+ return process_each_vg(cmd, argc, argv, NULL, NULL, READ_FOR_UPDATE, 0, NULL,
&vgexport_single);
}
diff --git a/tools/vgextend.c b/tools/vgextend.c
index 8f44672a0..1c3743be8 100644
--- a/tools/vgextend.c
+++ b/tools/vgextend.c
@@ -198,7 +198,7 @@ int vgextend(struct cmd_context *cmd, int argc, char **argv)
handle->custom_handle = &vp;
ret = process_each_vg(cmd, 0, NULL, vg_name, NULL,
- READ_FOR_UPDATE, handle,
+ READ_FOR_UPDATE, 0, handle,
restoremissing ? &_vgextend_restoremissing : &_vgextend_single);
destroy_processing_handle(cmd, handle);
diff --git a/tools/vgimport.c b/tools/vgimport.c
index 1f2e14d24..07a889b9a 100644
--- a/tools/vgimport.c
+++ b/tools/vgimport.c
@@ -109,6 +109,6 @@ int vgimport(struct cmd_context *cmd, int argc, char **argv)
return process_each_vg(cmd, argc, argv, NULL, NULL,
READ_FOR_UPDATE | READ_ALLOW_EXPORTED,
- NULL,
+ 0, NULL,
&vgimport_single);
}
diff --git a/tools/vgreduce.c b/tools/vgreduce.c
index ae86a6740..bae2b3e72 100644
--- a/tools/vgreduce.c
+++ b/tools/vgreduce.c
@@ -247,7 +247,7 @@ int vgreduce(struct cmd_context *cmd, int argc, char **argv)
process_each_vg(cmd, 0, NULL, vg_name, NULL,
READ_FOR_UPDATE | READ_ALLOW_EXPORTED,
- handle, &_vgreduce_repair_single);
+ 0, handle, &_vgreduce_repair_single);
if (vp.already_consistent) {
log_print_unless_silent("Volume group \"%s\" is already consistent", vg_name);
diff --git a/tools/vgremove.c b/tools/vgremove.c
index 1d1a40f59..f0da2f81f 100644
--- a/tools/vgremove.c
+++ b/tools/vgremove.c
@@ -110,7 +110,7 @@ int vgremove(struct cmd_context *cmd, int argc, char **argv)
cmd->handles_missing_pvs = 1;
ret = process_each_vg(cmd, argc, argv, NULL, NULL,
- READ_FOR_UPDATE,
+ READ_FOR_UPDATE, 0,
NULL, &vgremove_single);
return ret;
diff --git a/tools/vgrename.c b/tools/vgrename.c
index 3dceeab6b..200619381 100644
--- a/tools/vgrename.c
+++ b/tools/vgrename.c
@@ -246,7 +246,7 @@ int vgrename(struct cmd_context *cmd, int argc, char **argv)
ret = process_each_vg(cmd, 0, NULL, vg_name_old, NULL,
READ_FOR_UPDATE | READ_ALLOW_EXPORTED,
- handle, _vgrename_single);
+ 0, handle, _vgrename_single);
/* Needed if process_each_vg returns error before calling _single. */
if (vp.unlock_new_name)
diff --git a/tools/vgscan.c b/tools/vgscan.c
index 688e361a9..45a2d7e6e 100644
--- a/tools/vgscan.c
+++ b/tools/vgscan.c
@@ -117,7 +117,7 @@ int vgscan(struct cmd_context *cmd, int argc, char **argv)
else
log_print_unless_silent("Reading volume groups from cache.");
- maxret = process_each_vg(cmd, argc, argv, NULL, NULL, 0, NULL,
+ maxret = process_each_vg(cmd, argc, argv, NULL, NULL, 0, NULL, 0,
&vgscan_single);
if (arg_count(cmd, mknodes_ARG)) {