diff options
Diffstat (limited to 'lib/device/dev-cache.c')
-rw-r--r-- | lib/device/dev-cache.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/device/dev-cache.c b/lib/device/dev-cache.c index 7626cebbd..97165dbf8 100644 --- a/lib/device/dev-cache.c +++ b/lib/device/dev-cache.c @@ -1026,6 +1026,16 @@ struct device *dev_cache_get_by_devt(dev_t dev, struct dev_filter *f) f->passes_filter(f, d))) ? d : NULL; } +void dev_cache_full_scan(struct dev_filter *f) +{ + if (f && f->wipe) { + f->wipe(f); /* might call _full_scan(1) */ + if (!full_scan_done()) + _full_scan(1); + } else + _full_scan(1); +} + struct dev_iter *dev_iter_create(struct dev_filter *f, int dev_scan) { struct dev_iter *di = dm_malloc(sizeof(*di)); @@ -1037,14 +1047,8 @@ struct dev_iter *dev_iter_create(struct dev_filter *f, int dev_scan) if (dev_scan && !trust_cache()) { /* Flag gets reset between each command */ - if (!full_scan_done()) { - if (f && f->wipe) { - f->wipe(f); /* might call _full_scan(1) */ - if (!full_scan_done()) - _full_scan(1); - } else - _full_scan(1); - } + if (!full_scan_done()) + dev_cache_full_scan(f); } else _full_scan(0); |