[lvm-devel] master - filters: nodata option

David Teigland teigland at sourceware.org
Thu Oct 22 20:43:12 UTC 2020


Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=c74ccd5201d4566a77487d1aa89e72c254ea443d
Commit:        c74ccd5201d4566a77487d1aa89e72c254ea443d
Parent:        c601ec0d6ed0a1cf31cdf65b995e7b3f0b6f1d72
Author:        David Teigland <teigland at redhat.com>
AuthorDate:    Mon Oct 19 16:46:20 2020 -0500
Committer:     David Teigland <teigland at redhat.com>
CommitterDate: Wed Oct 21 16:24:16 2020 -0500

filters: nodata option

When filter_nodata_only is set, a filter that uses
data is skipped.
---
 lib/commands/toolcontext.h       | 1 +
 lib/filters/filter-fwraid.c      | 4 ++++
 lib/filters/filter-md.c          | 3 +++
 lib/filters/filter-partitioned.c | 4 ++++
 lib/filters/filter-signature.c   | 4 ++++
 5 files changed, 16 insertions(+)

diff --git a/lib/commands/toolcontext.h b/lib/commands/toolcontext.h
index c09558a42..d20768ad0 100644
--- a/lib/commands/toolcontext.h
+++ b/lib/commands/toolcontext.h
@@ -182,6 +182,7 @@ struct cmd_context {
 	unsigned pvscan_recreate_hints:1;	/* enable special case hint handling for pvscan --cache */
 	unsigned scan_lvs:1;
 	unsigned wipe_outdated_pvs:1;
+	unsigned filter_nodata_only:1;          /* only use filters that do not require data from the dev */
 
 	/*
 	 * Devices and filtering.
diff --git a/lib/filters/filter-fwraid.c b/lib/filters/filter-fwraid.c
index f82f87397..4ad1816e1 100644
--- a/lib/filters/filter-fwraid.c
+++ b/lib/filters/filter-fwraid.c
@@ -15,6 +15,7 @@
 #include "base/memory/zalloc.h"
 #include "lib/misc/lib.h"
 #include "lib/filters/filter.h"
+#include "lib/commands/toolcontext.h"
 
 #ifdef UDEV_SYNC_SUPPORT
 #include <libudev.h>
@@ -69,6 +70,9 @@ static int _ignore_fwraid(struct cmd_context *cmd, struct dev_filter *f __attrib
 {
 	int ret;
 
+	if (cmd->filter_nodata_only)
+		return 1;
+
 	dev->filtered_flags &= ~DEV_FILTERED_FWRAID;
 
 	if (!fwraid_filtering())
diff --git a/lib/filters/filter-md.c b/lib/filters/filter-md.c
index b530e407d..f72c52123 100644
--- a/lib/filters/filter-md.c
+++ b/lib/filters/filter-md.c
@@ -86,6 +86,9 @@ static int _passes_md_filter(struct cmd_context *cmd, struct dev_filter *f __att
 {
 	int ret;
 
+	if (cmd->filter_nodata_only)
+		return 1;
+
 	dev->filtered_flags &= ~DEV_FILTERED_MD_COMPONENT;
 
 	/*
diff --git a/lib/filters/filter-partitioned.c b/lib/filters/filter-partitioned.c
index 22194f81c..c0b5554c5 100644
--- a/lib/filters/filter-partitioned.c
+++ b/lib/filters/filter-partitioned.c
@@ -16,6 +16,7 @@
 #include "base/memory/zalloc.h"
 #include "lib/misc/lib.h"
 #include "lib/filters/filter.h"
+#include "lib/commands/toolcontext.h"
 
 #define MSG_SKIPPING "%s: Skipping: Partition table signature found"
 
@@ -24,6 +25,9 @@ static int _passes_partitioned_filter(struct cmd_context *cmd, struct dev_filter
 	struct dev_types *dt = (struct dev_types *) f->private;
 	int ret;
 
+	if (cmd->filter_nodata_only)
+		return 1;
+
 	dev->filtered_flags &= ~DEV_FILTERED_PARTITIONED;
 
 	ret = dev_is_partitioned(dt, dev);
diff --git a/lib/filters/filter-signature.c b/lib/filters/filter-signature.c
index f32bb2450..eeefa4f58 100644
--- a/lib/filters/filter-signature.c
+++ b/lib/filters/filter-signature.c
@@ -16,6 +16,7 @@
 #include "base/memory/zalloc.h"
 #include "lib/misc/lib.h"
 #include "lib/filters/filter.h"
+#include "lib/commands/toolcontext.h"
 
 #ifdef __linux__
 
@@ -27,6 +28,9 @@ static int _ignore_signature(struct cmd_context *cmd, struct dev_filter *f __att
 	char buf[BUFSIZE];
 	int ret = 0;
 
+	if (cmd->filter_nodata_only)
+		return 1;
+
 	dev->filtered_flags &= ~DEV_FILTERED_SIGNATURE;
 
 	if (!scan_bcache) {




More information about the lvm-devel mailing list