summaryrefslogtreecommitdiff
path: root/lib/filters/filter-persistent.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/filters/filter-persistent.c')
-rw-r--r--lib/filters/filter-persistent.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/filters/filter-persistent.c b/lib/filters/filter-persistent.c
index afa32d4b9..291f3932f 100644
--- a/lib/filters/filter-persistent.c
+++ b/lib/filters/filter-persistent.c
@@ -64,11 +64,17 @@ static int _init_hash(struct pfilter *pf)
return 1;
}
-static void _persistent_filter_wipe(struct dev_filter *f)
+static void _persistent_filter_wipe(struct cmd_context *cmd, struct dev_filter *f, struct device *dev, const char *use_filter_name)
{
struct pfilter *pf = (struct pfilter *) f->private;
+ struct dm_str_list *sl;
- dm_hash_wipe(pf->devices);
+ if (!dev) {
+ dm_hash_wipe(pf->devices);
+ } else {
+ dm_list_iterate_items(sl, &dev->aliases)
+ dm_hash_remove(pf->devices, sl->str);
+ }
}
static int _lookup_p(struct cmd_context *cmd, struct dev_filter *f, struct device *dev, const char *use_filter_name)