1*56a34939Shaad /* $NetBSD: dev-cache.h,v 1.1.1.1 2008/12/22 00:17:55 haad Exp $ */ 2*56a34939Shaad 3*56a34939Shaad /* 4*56a34939Shaad * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. 5*56a34939Shaad * Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. 6*56a34939Shaad * 7*56a34939Shaad * This file is part of LVM2. 8*56a34939Shaad * 9*56a34939Shaad * This copyrighted material is made available to anyone wishing to use, 10*56a34939Shaad * modify, copy, or redistribute it subject to the terms and conditions 11*56a34939Shaad * of the GNU Lesser General Public License v.2.1. 12*56a34939Shaad * 13*56a34939Shaad * You should have received a copy of the GNU Lesser General Public License 14*56a34939Shaad * along with this program; if not, write to the Free Software Foundation, 15*56a34939Shaad * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16*56a34939Shaad */ 17*56a34939Shaad 18*56a34939Shaad #ifndef _LVM_DEV_CACHE_H 19*56a34939Shaad #define _LVM_DEV_CACHE_H 20*56a34939Shaad 21*56a34939Shaad #include "device.h" 22*56a34939Shaad 23*56a34939Shaad /* 24*56a34939Shaad * predicate for devices. 25*56a34939Shaad */ 26*56a34939Shaad struct dev_filter { 27*56a34939Shaad int (*passes_filter) (struct dev_filter * f, struct device * dev); 28*56a34939Shaad void (*destroy) (struct dev_filter * f); 29*56a34939Shaad void *private; 30*56a34939Shaad }; 31*56a34939Shaad 32*56a34939Shaad /* 33*56a34939Shaad * The global device cache. 34*56a34939Shaad */ 35*56a34939Shaad struct cmd_context; 36*56a34939Shaad int dev_cache_init(struct cmd_context *cmd); 37*56a34939Shaad void dev_cache_exit(void); 38*56a34939Shaad 39*56a34939Shaad /* Trigger(1) or avoid(0) a scan */ 40*56a34939Shaad void dev_cache_scan(int do_scan); 41*56a34939Shaad int dev_cache_has_scanned(void); 42*56a34939Shaad 43*56a34939Shaad int dev_cache_add_dir(const char *path); 44*56a34939Shaad int dev_cache_add_loopfile(const char *path); 45*56a34939Shaad struct device *dev_cache_get(const char *name, struct dev_filter *f); 46*56a34939Shaad 47*56a34939Shaad void dev_set_preferred_name(struct str_list *sl, struct device *dev); 48*56a34939Shaad 49*56a34939Shaad /* 50*56a34939Shaad * Object for iterating through the cache. 51*56a34939Shaad */ 52*56a34939Shaad struct dev_iter; 53*56a34939Shaad struct dev_iter *dev_iter_create(struct dev_filter *f, int dev_scan); 54*56a34939Shaad void dev_iter_destroy(struct dev_iter *iter); 55*56a34939Shaad struct device *dev_iter_get(struct dev_iter *iter); 56*56a34939Shaad 57*56a34939Shaad #endif 58