| /* |
| * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. |
| * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. |
| * |
| * This file is part of LVM2. |
| * |
| * 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 Lesser General Public License v.2.1. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with this program; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef _LVM_DEV_CACHE_H |
| #define _LVM_DEV_CACHE_H |
| |
| #include "device.h" |
| #include "lvm-wrappers.h" |
| |
| /* |
| * predicate for devices. |
| */ |
| struct dev_filter { |
| int (*passes_filter) (struct dev_filter * f, struct device * dev); |
| void (*destroy) (struct dev_filter * f); |
| void (*wipe) (struct dev_filter * f); |
| int (*dump) (struct dev_filter * f, int merge_existing); |
| void *private; |
| unsigned use_count; |
| }; |
| |
| int dev_cache_index_devs(void); |
| struct dm_list *dev_cache_get_dev_list_for_vgid(const char *vgid); |
| struct dm_list *dev_cache_get_dev_list_for_lvid(const char *lvid); |
| |
| /* |
| * The global device cache. |
| */ |
| struct cmd_context; |
| int dev_cache_init(struct cmd_context *cmd); |
| int dev_cache_exit(void); |
| /* |
| * Returns number of open devices. |
| */ |
| int dev_cache_check_for_open_devices(void); |
| |
| /* Trigger(1) or avoid(0) a scan */ |
| void dev_cache_scan(int do_scan); |
| int dev_cache_has_scanned(void); |
| void dev_cache_full_scan(struct dev_filter *f); |
| |
| int dev_cache_add_dir(const char *path); |
| int dev_cache_add_loopfile(const char *path); |
| __attribute__((nonnull(1))) |
| struct device *dev_cache_get(const char *name, struct dev_filter *f); |
| |
| // TODO |
| struct device *dev_cache_get_by_devt(dev_t device, struct dev_filter *f); |
| |
| void dev_set_preferred_name(struct dm_str_list *sl, struct device *dev); |
| |
| /* |
| * Object for iterating through the cache. |
| */ |
| struct dev_iter; |
| struct dev_iter *dev_iter_create(struct dev_filter *f, int dev_scan); |
| void dev_iter_destroy(struct dev_iter *iter); |
| struct device *dev_iter_get(struct dev_iter *iter); |
| |
| void dev_reset_error_count(struct cmd_context *cmd); |
| |
| #endif |