summaryrefslogtreecommitdiffstats
path: root/tools/lvmdiskscan.c
diff options
context:
space:
mode:
authorAlasdair Kergon <agk@redhat.com>2002-11-29 15:02:57 +0000
committerAlasdair Kergon <agk@redhat.com>2002-11-29 15:02:57 +0000
commitc80325cae484b3ea1cea4f4ad889ad4a912f76f2 (patch)
tree7e4e2dd095617b754b3825a61c3dac158c3bbcfd /tools/lvmdiskscan.c
parent62ef058497f6c3618f930930eb5dd4bf94dabb25 (diff)
downloadlvm2-c80325cae484b3ea1cea4f4ad889ad4a912f76f2.tar.gz
lvm2-c80325cae484b3ea1cea4f4ad889ad4a912f76f2.tar.xz
lvm2-c80325cae484b3ea1cea4f4ad889ad4a912f76f2.zip
Further help text tidying & support for -?.
Diffstat (limited to 'tools/lvmdiskscan.c')
-rw-r--r--tools/lvmdiskscan.c143
1 files changed, 69 insertions, 74 deletions
diff --git a/tools/lvmdiskscan.c b/tools/lvmdiskscan.c
index adc122e1..a6edfa6b 100644
--- a/tools/lvmdiskscan.c
+++ b/tools/lvmdiskscan.c
@@ -13,73 +13,58 @@
#include "tools.h"
-int _get_max_dev_name_len(struct dev_filter *filter);
-void _count(struct device *, int *, int *);
-void _print(struct device *, uint64_t, char *);
-int _check_device(struct device *);
-
int disks_found = 0;
int parts_found = 0;
int pv_disks_found = 0;
int pv_parts_found = 0;
int max_len;
-int lvmdiskscan(struct cmd_context *cmd, int argc, char **argv)
+static int _get_max_dev_name_len(struct dev_filter *filter)
{
- uint64_t size;
+ int len = 0;
+ int max_len = 0;
struct dev_iter *iter;
struct device *dev;
- struct label *label;
-
- if (arg_count(cmd, lvmpartition_ARG))
- log_print("WARNING: only considering LVM devices");
- max_len = _get_max_dev_name_len(cmd->filter);
-
- if (!(iter = dev_iter_create(cmd->filter))) {
+ if (!(iter = dev_iter_create(filter))) {
log_error("dev_iter_create failed");
return 0;
}
/* Do scan */
for (dev = dev_iter_get(iter); dev; dev = dev_iter_get(iter)) {
- /* Try if it is a PV first */
- if ((label_read(dev, &label))) {
- if (!dev_get_size(dev, &size)) {
- log_error("Couldn't get size of \"%s\"",
- dev_name(dev));
- continue;
- }
- _print(dev, size, "LVM physical volume");
- _count(dev, &pv_disks_found, &pv_parts_found);
- continue;
- }
- /* If user just wants PVs we are done */
- if (arg_count(cmd, lvmpartition_ARG))
- continue;
-
- /* What other device is it? */
- if (!_check_device(dev))
- continue;
+ len = strlen(dev_name(dev));
+ if (len > max_len)
+ max_len = len;
}
dev_iter_destroy(iter);
- /* Display totals */
- if (!arg_count(cmd, lvmpartition_ARG)) {
- log_print("%d disk%s",
- disks_found, disks_found == 1 ? "" : "s");
- log_print("%d partition%s",
- parts_found, parts_found == 1 ? "" : "s");
- }
- log_print("%d LVM physical volume whole disk%s",
- pv_disks_found, pv_disks_found == 1 ? "" : "s");
- log_print("%d LVM physical volume%s",
- pv_parts_found, pv_parts_found == 1 ? "" : "s");
+ return max_len;
+}
- return 0;
+static void _count(struct device *dev, int *disks, int *parts)
+{
+ int c = dev_name(dev)[strlen(dev_name(dev)) - 1];
+
+ if (!isdigit(c))
+ (*disks)++;
+ else
+ (*parts)++;
+}
+
+static void _print(struct device *dev, uint64_t size, char *what)
+{
+ char *dummy = display_size(size / 2, SIZE_SHORT);
+ const char *name = dev_name(dev);
+
+ if (!what)
+ what = "";
+
+ log_print("%-*s [%15s] %s", max_len, name, dummy, what);
+ dbg_free(dummy);
}
-int _check_device(struct device *dev)
+static int _check_device(struct device *dev)
{
char buffer;
uint64_t size;
@@ -103,47 +88,57 @@ int _check_device(struct device *dev)
return 1;
}
-int _get_max_dev_name_len(struct dev_filter *filter)
+int lvmdiskscan(struct cmd_context *cmd, int argc, char **argv)
{
- int len = 0;
- int max_len = 0;
+ uint64_t size;
struct dev_iter *iter;
struct device *dev;
+ struct label *label;
- if (!(iter = dev_iter_create(filter))) {
+ if (arg_count(cmd, lvmpartition_ARG))
+ log_print("WARNING: only considering LVM devices");
+
+ max_len = _get_max_dev_name_len(cmd->filter);
+
+ if (!(iter = dev_iter_create(cmd->filter))) {
log_error("dev_iter_create failed");
return 0;
}
/* Do scan */
for (dev = dev_iter_get(iter); dev; dev = dev_iter_get(iter)) {
- len = strlen(dev_name(dev));
- if (len > max_len)
- max_len = len;
+ /* Try if it is a PV first */
+ if ((label_read(dev, &label))) {
+ if (!dev_get_size(dev, &size)) {
+ log_error("Couldn't get size of \"%s\"",
+ dev_name(dev));
+ continue;
+ }
+ _print(dev, size, "LVM physical volume");
+ _count(dev, &pv_disks_found, &pv_parts_found);
+ continue;
+ }
+ /* If user just wants PVs we are done */
+ if (arg_count(cmd, lvmpartition_ARG))
+ continue;
+
+ /* What other device is it? */
+ if (!_check_device(dev))
+ continue;
}
dev_iter_destroy(iter);
- return max_len;
-}
-
-void _count(struct device *dev, int *disks, int *parts)
-{
- int c = dev_name(dev)[strlen(dev_name(dev)) - 1];
-
- if (!isdigit(c))
- (*disks)++;
- else
- (*parts)++;
-}
-
-void _print(struct device *dev, uint64_t size, char *what)
-{
- char *dummy = display_size(size / 2, SIZE_SHORT);
- const char *name = dev_name(dev);
-
- if (!what)
- what = "";
+ /* Display totals */
+ if (!arg_count(cmd, lvmpartition_ARG)) {
+ log_print("%d disk%s",
+ disks_found, disks_found == 1 ? "" : "s");
+ log_print("%d partition%s",
+ parts_found, parts_found == 1 ? "" : "s");
+ }
+ log_print("%d LVM physical volume whole disk%s",
+ pv_disks_found, pv_disks_found == 1 ? "" : "s");
+ log_print("%d LVM physical volume%s",
+ pv_parts_found, pv_parts_found == 1 ? "" : "s");
- log_print("%-*s [%15s] %s", max_len, name, dummy, what);
- dbg_free(dummy);
+ return 0;
}