summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Rockai <prockai@redhat.com>2013-07-22 15:03:56 +0200
committerPetr Rockai <prockai@redhat.com>2013-07-22 15:05:39 +0200
commit3fdb45d0402ac9b404f4277d7954043ea257f019 (patch)
tree9f83ed68d9cdaae543d6be4359007ab947761828
parentea333a894e93f665a515986fdebf2a6c9e10d42a (diff)
downloadlvm2-3fdb45d0402ac9b404f4277d7954043ea257f019.tar.gz
pvscan: Respect lvmetad (global) filter in --cache w/ a device.
-rw-r--r--test/shell/lvmetad-pvscan-filter.sh29
-rw-r--r--tools/pvscan.c5
2 files changed, 31 insertions, 3 deletions
diff --git a/test/shell/lvmetad-pvscan-filter.sh b/test/shell/lvmetad-pvscan-filter.sh
new file mode 100644
index 000000000..5dd66c44d
--- /dev/null
+++ b/test/shell/lvmetad-pvscan-filter.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+# Copyright (C) 2012 Red Hat, Inc. All rights reserved.
+#
+# This copyrighted material is made available to anyone wishing to use,
+# modify, copy, or redistribute it subject to the terms and conditions
+# of the GNU General Public License v.2.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+. lib/test
+
+test -e LOCAL_LVMETAD || skip
+
+aux prepare_pvs 2
+
+maj=$(($(stat --printf=0x%t "$dev2")))
+min=$(($(stat --printf=0x%T "$dev2")))
+
+aux hide_dev $dev2
+not pvscan --cache $dev2 2>&1 | grep "not found"
+# pvscan with --major/--minor does not fail (for udev's sake?)
+pvscan --cache --major $maj --minor $min 2>&1 | grep "not found"
+aux unhide_dev $dev2
+
+pvscan --cache $dev2 2>&1 | not grep "not found"
+pvscan --cache --major $maj --minor $min 2>&1 | not grep "not found"
+pvs | grep $dev2
diff --git a/tools/pvscan.c b/tools/pvscan.c
index 63dc5247e..96bbf6b86 100644
--- a/tools/pvscan.c
+++ b/tools/pvscan.c
@@ -187,7 +187,7 @@ static int _pvscan_lvmetad(struct cmd_context *cmd, int argc, char **argv)
/* Process any command line PVs first. */
while (argc--) {
pv_name = *argv++;
- dev = dev_cache_get(pv_name, NULL);
+ dev = dev_cache_get(pv_name, cmd->lvmetad_filter);
if (!dev) {
log_error("Physical Volume %s not found.", pv_name);
ret = ECMD_FAILED;
@@ -218,10 +218,9 @@ static int _pvscan_lvmetad(struct cmd_context *cmd, int argc, char **argv)
devno = MKDEV((dev_t)major, minor);
- if (!(dev = dev_cache_get_by_devt(devno, NULL))) {
+ if (!(dev = dev_cache_get_by_devt(devno, cmd->lvmetad_filter))) {
if (!dm_asprintf(&buf, "%" PRIi32 ":%" PRIi32, major, minor))
stack;
- /* FIXME Filters? */
if (!lvmetad_pv_gone(devno, buf ? : "", handler)) {
ret = ECMD_FAILED;
if (buf)