1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-30 17:18:21 +03:00

o rfilter now checks all aliases for a match

This commit is contained in:
Joe Thornber 2001-10-25 14:19:39 +00:00
parent c7f0b573ac
commit 5e610278ad
2 changed files with 23 additions and 6 deletions

View File

@ -111,6 +111,11 @@ static int _insert_dev(const char *path, dev_t d)
return 0;
}
if (!hash_insert(_cache.names, path, dev)) {
log_err("Couldn't add name to hash in dir cache.");
return 0;
}
return 1;
}

View File

@ -10,6 +10,7 @@
#include "device.h"
#include "bitset.h"
#include "log.h"
#include "list.h"
struct rfilter {
struct pool *mem;
@ -148,17 +149,28 @@ static int _build_matcher(struct rfilter *rf, struct config_value *val)
static int _accept_p(struct dev_filter *f, struct device *dev)
{
int m;
int m, nothing_matched = 1;
struct rfilter *rf = (struct rfilter *) f->private;
struct list_head *tmp;
struct str_list *sl;
m = matcher_run(rf->engine, dev_name(dev));
list_for_each(tmp, &dev->aliases) {
sl = list_entry(tmp, struct str_list, list);
m = matcher_run(rf->engine, sl->str);
if (m >= 0) {
nothing_matched = 0;
if (bit(rf->accept, m))
return 1;
}
}
/*
* pass everything that doesn't match,
* otherwise look it up in the accepts
* bitset.
* pass everything that doesn't match
* anything.
*/
return (m < 0) ? 1 : bit(rf->accept, m);
return nothing_matched;
}
static void _destroy(struct dev_filter *f)