2001-10-03 12:41:29 +00:00
/*
2004-03-30 19:35:44 +00:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-20 20:55:30 +00:00
* Copyright ( C ) 2004 - 2007 Red Hat , Inc . All rights reserved .
2001-10-03 12:41:29 +00:00
*
2004-03-30 19:35:44 +00:00
* 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
2007-08-20 20:55:30 +00:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 19:35:44 +00:00
*
2007-08-20 20:55:30 +00:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 19:35:44 +00:00
* along with this program ; if not , write to the Free Software Foundation ,
2016-01-21 11:49:46 +01:00
* Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
2001-10-03 12:41:29 +00:00
*/
# ifndef _LVM_DEV_CACHE_H
# define _LVM_DEV_CACHE_H
2018-05-14 10:30:20 +01:00
# include "lib/device/device.h"
2019-07-09 14:48:31 -05:00
# include "lib/device/dev-type.h"
2018-05-14 10:30:20 +01:00
# include "lib/misc/lvm-wrappers.h"
2001-10-03 12:41:29 +00:00
2018-06-15 11:03:55 -05:00
struct cmd_context ;
2001-10-03 12:41:29 +00:00
/*
* predicate for devices .
*/
struct dev_filter {
2018-12-07 14:35:22 -06:00
int ( * passes_filter ) ( struct cmd_context * cmd , struct dev_filter * f , struct device * dev , const char * use_filter_name ) ;
2018-06-15 11:03:55 -05:00
void ( * destroy ) ( struct dev_filter * f ) ;
void ( * wipe ) ( struct dev_filter * f ) ;
2001-10-03 12:41:29 +00:00
void * private ;
2012-03-12 14:40:41 +00:00
unsigned use_count ;
2018-12-07 14:35:22 -06:00
const char * name ;
2001-10-03 12:41:29 +00:00
} ;
2016-03-30 10:39:30 +02:00
int dev_cache_index_devs ( void ) ;
2016-03-16 14:01:26 +01:00
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 ) ;
2001-10-03 12:41:29 +00:00
/*
* The global device cache .
*/
2007-04-26 16:44:59 +00:00
int dev_cache_init ( struct cmd_context * cmd ) ;
2014-03-25 10:53:42 +01:00
int dev_cache_exit ( void ) ;
2018-06-15 11:03:55 -05:00
2014-04-04 01:39:42 +01:00
/*
* Returns number of open devices .
*/
int dev_cache_check_for_open_devices ( void ) ;
2001-10-03 12:41:29 +00:00
2018-04-09 11:13:43 -05:00
void dev_cache_scan ( void ) ;
2002-11-18 14:01:16 +00:00
int dev_cache_has_scanned ( void ) ;
2001-10-03 12:41:29 +00:00
int dev_cache_add_dir ( const char * path ) ;
2018-06-15 11:03:55 -05:00
struct device * dev_cache_get ( struct cmd_context * cmd , const char * name , struct dev_filter * f ) ;
2017-10-17 02:12:41 +01:00
const char * dev_cache_filtered_reason ( const char * name ) ;
2001-10-03 12:41:29 +00:00
2019-04-05 14:03:38 -05:00
struct device * dev_cache_get_by_devt ( struct cmd_context * cmd , dev_t device , struct dev_filter * f , int * filtered ) ;
2012-02-23 13:11:07 +00:00
2014-05-29 09:41:03 +02:00
void dev_set_preferred_name ( struct dm_str_list * sl , struct device * dev ) ;
2007-04-26 16:44:59 +00:00
2001-10-03 12:41:29 +00:00
/*
* Object for iterating through the cache .
*/
struct dev_iter ;
2018-04-09 11:13:43 -05:00
struct dev_iter * dev_iter_create ( struct dev_filter * f , int unused ) ;
2001-10-03 12:41:29 +00:00
void dev_iter_destroy ( struct dev_iter * iter ) ;
2018-06-15 11:03:55 -05:00
struct device * dev_iter_get ( struct cmd_context * cmd , struct dev_iter * iter ) ;
2001-10-03 12:41:29 +00:00
2010-10-13 15:40:38 +00:00
void dev_reset_error_count ( struct cmd_context * cmd ) ;
2018-05-29 17:02:27 -05:00
void dev_cache_failed_path ( struct device * dev , const char * path ) ;
2019-07-09 14:48:31 -05:00
bool dev_cache_has_md_with_end_superblock ( struct dev_types * dt ) ;
2001-10-03 12:41:29 +00:00
# endif