2001-10-09 20:05:34 +04:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2007-08-21 00:55:30 +04:00
* Copyright ( C ) 2004 - 2007 Red Hat , Inc . All rights reserved .
2001-10-09 20:05:34 +04:00
*
2004-03-30 23:35:44 +04: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-21 00:55:30 +04:00
* of the GNU Lesser General Public License v .2 .1 .
2004-03-30 23:35:44 +04:00
*
2007-08-21 00:55:30 +04:00
* You should have received a copy of the GNU Lesser General Public License
2004-03-30 23:35:44 +04:00
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
2001-10-09 20:05:34 +04:00
*/
2001-10-16 20:25:28 +04:00
# ifndef LVM_ACTIVATE_H
# define LVM_ACTIVATE_H
2001-10-09 20:05:34 +04:00
2007-07-18 19:38:58 +04:00
# include "metadata-exported.h"
2003-01-09 01:44:07 +03:00
struct lvinfo {
int exists ;
int suspended ;
unsigned int open_count ;
int major ;
int minor ;
int read_only ;
2005-11-09 01:52:26 +03:00
int live_table ;
int inactive_table ;
2007-11-12 23:51:54 +03:00
uint32_t read_ahead ;
2003-01-09 01:44:07 +03:00
} ;
2001-11-21 22:32:35 +03:00
2008-04-07 14:23:47 +04:00
/* target attribute flags */
# define MIRROR_LOG_CLUSTERED 0x00000001U
2002-11-18 17:01:16 +03:00
void set_activation ( int activation ) ;
2002-12-20 02:25:55 +03:00
int activation ( void ) ;
2002-11-18 17:01:16 +03:00
2002-01-17 19:39:24 +03:00
int driver_version ( char * version , size_t size ) ;
int library_version ( char * version , size_t size ) ;
2004-04-08 19:23:23 +04:00
int lvm1_present ( struct cmd_context * cmd ) ;
2002-01-17 19:39:24 +03:00
2009-02-28 03:54:06 +03:00
int module_present ( struct cmd_context * cmd , const char * target_name ) ;
int target_present ( struct cmd_context * cmd , const char * target_name ,
int use_modprobe ) ;
2005-12-20 00:01:39 +03:00
int target_version ( const char * target_name , uint32_t * maj ,
2010-08-17 02:54:35 +04:00
uint32_t * min , uint32_t * patchlevel ) ;
2006-10-03 21:55:20 +04:00
int list_segment_modules ( struct dm_pool * mem , const struct lv_segment * seg ,
2008-11-04 01:14:30 +03:00
struct dm_list * modules ) ;
2006-10-03 21:55:20 +04:00
int list_lv_modules ( struct dm_pool * mem , const struct logical_volume * lv ,
2008-11-04 01:14:30 +03:00
struct dm_list * modules ) ;
2004-03-26 22:52:09 +03:00
2006-05-16 20:48:31 +04:00
void activation_release ( void ) ;
2003-07-05 02:34:56 +04:00
void activation_exit ( void ) ;
2010-08-17 20:25:32 +04:00
/* int lv_suspend(struct cmd_context *cmd, const char *lvid_s); */
int lv_suspend_if_active ( struct cmd_context * cmd , const char * lvid_s , unsigned origin_only ) ;
int lv_resume ( struct cmd_context * cmd , const char * lvid_s , unsigned origin_only ) ;
int lv_resume_if_active ( struct cmd_context * cmd , const char * lvid_s , unsigned origin_only ) ;
2005-08-15 03:18:28 +04:00
int lv_activate ( struct cmd_context * cmd , const char * lvid_s , int exclusive ) ;
int lv_activate_with_filter ( struct cmd_context * cmd , const char * lvid_s ,
int exclusive ) ;
2003-04-25 02:09:13 +04:00
int lv_deactivate ( struct cmd_context * cmd , const char * lvid_s ) ;
2003-11-12 22:16:48 +03:00
int lv_mknodes ( struct cmd_context * cmd , const struct logical_volume * lv ) ;
2002-02-11 20:42:02 +03:00
/*
* Returns 1 if info structure has been populated , else 0.
*/
2010-08-17 20:25:32 +04:00
int lv_info ( struct cmd_context * cmd , const struct logical_volume * lv ,
unsigned origin_only , struct lvinfo * info ,
2007-11-12 23:51:54 +03:00
int with_open_count , int with_read_ahead ) ;
2010-08-17 20:25:32 +04:00
int lv_info_by_lvid ( struct cmd_context * cmd , const char * lvid_s , unsigned origin_only ,
2007-11-12 23:51:54 +03:00
struct lvinfo * info , int with_open_count , int with_read_ahead ) ;
2004-03-08 21:54:13 +03:00
/*
* Returns 1 if activate_lv has been set : 1 = activate ; 0 = don ' t .
*/
int lv_activation_filter ( struct cmd_context * cmd , const char * lvid_s ,
2004-03-26 22:52:09 +03:00
int * activate_lv ) ;
2004-03-08 21:54:13 +03:00
2010-05-24 19:32:20 +04:00
int lv_check_transient ( struct logical_volume * lv ) ;
2002-05-10 01:17:57 +04:00
/*
* Returns 1 if percent has been set , else 0.
*/
2009-10-01 04:35:29 +04:00
int lv_snapshot_percent ( const struct logical_volume * lv , float * percent ,
percent_range_t * percent_range ) ;
2006-04-06 18:06:27 +04:00
int lv_mirror_percent ( struct cmd_context * cmd , struct logical_volume * lv ,
2009-10-01 04:35:29 +04:00
int wait , float * percent , percent_range_t * percent_range ,
uint32_t * event_nr ) ;
2001-11-07 18:02:07 +03:00
2001-11-07 14:51:42 +03:00
/*
2002-02-11 18:48:34 +03:00
* Return number of LVs in the VG that are active .
2001-11-07 14:51:42 +03:00
*/
2001-10-16 20:25:28 +04:00
int lvs_in_vg_activated ( struct volume_group * vg ) ;
2007-08-07 13:06:05 +04:00
int lvs_in_vg_opened ( const struct volume_group * vg ) ;
2001-10-16 20:25:28 +04:00
2008-04-11 01:34:18 +04:00
int lv_is_active ( struct logical_volume * lv ) ;
2006-05-12 23:16:48 +04:00
2010-04-23 06:57:39 +04:00
int lv_has_target_type ( struct dm_pool * mem , struct logical_volume * lv ,
const char * layer , const char * target_type ) ;
2010-08-17 20:25:32 +04:00
int monitor_dev_for_events ( struct cmd_context * cmd , struct logical_volume * lv ,
unsigned origin_only , int do_reg ) ;
2006-05-12 23:16:48 +04:00
2010-08-17 02:54:35 +04:00
# ifdef DMEVENTD
# include "libdevmapper-event.h"
char * get_monitor_dso_path ( struct cmd_context * cmd , const char * libpath ) ;
2010-08-17 05:16:41 +04:00
int target_registered_with_dmeventd ( struct cmd_context * cmd , const char * libpath ,
struct logical_volume * lv , int * pending ) ;
int target_register_events ( struct cmd_context * cmd , const char * dso , struct logical_volume * lv ,
2010-08-17 02:54:35 +04:00
int evmask __attribute__ ( ( unused ) ) , int set , int timeout ) ;
# endif
2005-10-25 23:08:21 +04:00
/*
* Returns 1 if PV has a dependency tree that uses anything in VG .
*/
2006-05-11 21:58:58 +04:00
int pv_uses_vg ( struct physical_volume * pv ,
2005-10-25 23:08:21 +04:00
struct volume_group * vg ) ;
2007-01-26 00:22:30 +03:00
/*
* Returns 1 if mapped device is not suspended .
*/
2010-05-13 22:38:38 +04:00
int device_is_usable ( struct device * dev ) ;
2007-01-26 00:22:30 +03:00
2001-10-09 20:05:34 +04:00
# endif