2001-09-25 16:49:28 +04:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2009-02-09 12:45:49 +03:00
* Copyright ( C ) 2004 - 2009 Red Hat , Inc . All rights reserved .
2001-09-25 16:49:28 +04:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2 .
2001-09-25 16:49:28 +04:00
*
2004-03-30 23:35:44 +04:00
* 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 .
2001-09-25 16:49:28 +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-09-25 16:49:28 +04:00
*/
2001-10-01 19:14:39 +04:00
# ifndef _LVM_TOOLLIB_H
# define _LVM_TOOLLIB_H
2001-09-25 16:49:28 +04:00
2007-07-18 19:38:58 +04:00
# include "metadata-exported.h"
2002-02-11 23:50:53 +03:00
2013-09-03 18:06:16 +04:00
int become_daemon ( struct cmd_context * cmd , int skip_lvm ) ;
2001-10-06 01:39:30 +04:00
int autobackup_set ( void ) ;
2001-12-31 22:09:51 +03:00
int autobackup_init ( const char * backup_dir , int keep_days , int keep_number ,
int autobackup ) ;
2001-12-20 14:52:54 +03:00
int autobackup ( struct volume_group * vg ) ;
2001-09-25 16:49:28 +04:00
2013-10-02 00:20:10 +04:00
int ignore_vg ( struct volume_group * vg , const char * vg_name , int allow_inconsistent , int * ret ) ;
2002-11-18 17:04:08 +03:00
struct volume_group * recover_vg ( struct cmd_context * cmd , const char * vgname ,
2007-08-22 18:38:18 +04:00
uint32_t lock_type ) ;
2002-11-18 17:04:08 +03:00
2010-04-14 03:57:41 +04:00
typedef int ( * process_single_vg_fn_t ) ( struct cmd_context * cmd ,
const char * vg_name ,
struct volume_group * vg ,
void * handle ) ;
typedef int ( * process_single_pv_fn_t ) ( struct cmd_context * cmd ,
struct volume_group * vg ,
struct physical_volume * pv ,
void * handle ) ;
2013-07-29 20:51:27 +04:00
typedef int ( * process_single_label_fn_t ) ( struct cmd_context * cmd ,
struct label * label ,
void * handle ) ;
2010-04-14 03:57:41 +04:00
typedef int ( * process_single_lv_fn_t ) ( struct cmd_context * cmd ,
struct logical_volume * lv ,
void * handle ) ;
typedef int ( * process_single_seg_fn_t ) ( struct cmd_context * cmd ,
struct lv_segment * seg ,
void * handle ) ;
typedef int ( * process_single_pvseg_fn_t ) ( struct cmd_context * cmd ,
struct volume_group * vg ,
struct pv_segment * pvseg ,
void * handle ) ;
2002-02-12 00:00:35 +03:00
int process_each_vg ( struct cmd_context * cmd , int argc , char * * argv ,
2009-07-01 21:00:50 +04:00
uint32_t flags , void * handle ,
2010-04-14 03:57:41 +04:00
process_single_vg_fn_t process_single_vg ) ;
2001-10-08 22:44:22 +04:00
2002-02-12 00:00:35 +03:00
int process_each_pv ( struct cmd_context * cmd , int argc , char * * argv ,
2009-02-09 12:45:49 +03:00
struct volume_group * vg , uint32_t lock_type ,
int scan_label_only , void * handle ,
2010-04-14 03:57:41 +04:00
process_single_pv_fn_t process_single_pv ) ;
2009-02-09 12:45:49 +03:00
2013-07-29 20:51:27 +04:00
int process_each_label ( struct cmd_context * cmd , int argc , char * * argv ,
void * handle , process_single_label_fn_t process_single_label ) ;
2005-04-20 00:58:25 +04:00
int process_each_segment_in_pv ( struct cmd_context * cmd ,
struct volume_group * vg ,
struct physical_volume * pv ,
void * handle ,
2010-04-14 03:57:41 +04:00
process_single_pvseg_fn_t process_single_pvseg ) ;
2002-11-18 17:04:08 +03:00
2002-02-11 23:50:53 +03:00
int process_each_lv ( struct cmd_context * cmd , int argc , char * * argv ,
2009-07-01 21:00:50 +04:00
uint32_t flags , void * handle ,
2010-04-14 03:57:41 +04:00
process_single_lv_fn_t process_single_lv ) ;
2001-11-19 18:20:50 +03:00
2002-12-12 23:55:49 +03:00
int process_each_segment_in_lv ( struct cmd_context * cmd ,
struct logical_volume * lv , void * handle ,
2010-04-14 03:57:41 +04:00
process_single_seg_fn_t process_single_seg ) ;
2007-08-07 13:06:05 +04:00
2002-02-11 23:50:53 +03:00
int process_each_pv_in_vg ( struct cmd_context * cmd , struct volume_group * vg ,
2014-01-31 01:09:28 +04:00
const struct dm_list * tagsl , void * handle ,
2010-04-14 03:57:41 +04:00
process_single_pv_fn_t process_single_pv ) ;
2007-08-07 13:06:05 +04:00
2002-11-18 17:04:08 +03:00
2007-08-07 13:06:05 +04:00
int process_each_lv_in_vg ( struct cmd_context * cmd ,
2010-03-23 17:24:04 +03:00
struct volume_group * vg ,
2008-11-04 01:14:30 +03:00
const struct dm_list * arg_lvnames ,
2014-01-31 01:09:28 +04:00
const struct dm_list * tagsl ,
2010-05-21 16:21:51 +04:00
struct dm_list * failed_lvnames ,
2002-11-18 17:04:08 +03:00
void * handle ,
2010-04-14 03:57:41 +04:00
process_single_lv_fn_t process_single_lv ) ;
2001-10-08 22:44:22 +04:00
2002-04-24 22:20:51 +04:00
char * default_vgname ( struct cmd_context * cmd ) ;
2002-12-20 02:25:55 +03:00
const char * extract_vgname ( struct cmd_context * cmd , const char * lv_name ) ;
2011-02-18 17:47:28 +03:00
const char * skip_dev_dir ( struct cmd_context * cmd , const char * vg_name ,
unsigned * dev_dir_found ) ;
2001-10-29 16:52:23 +03:00
2002-01-21 19:05:23 +03:00
/*
* Builds a list of pv ' s from the names in argv . Used in
* lvcreate / extend .
*/
2008-11-04 01:14:30 +03:00
struct dm_list * create_pv_list ( struct dm_pool * mem , struct volume_group * vg , int argc ,
2004-08-18 01:55:23 +04:00
char * * argv , int allocatable_only ) ;
2002-01-21 19:05:23 +03:00
2008-11-04 01:14:30 +03:00
struct dm_list * clone_pv_list ( struct dm_pool * mem , struct dm_list * pvs ) ;
2003-04-25 02:23:24 +04:00
2009-11-01 23:02:32 +03:00
void vgcreate_params_set_defaults ( struct vgcreate_params * vp_def ,
struct volume_group * vg ) ;
2009-11-01 23:03:24 +03:00
int vgcreate_params_set_from_args ( struct cmd_context * cmd ,
struct vgcreate_params * vp_new ,
struct vgcreate_params * vp_def ) ;
2013-04-11 15:51:08 +04:00
int lv_change_activate ( struct cmd_context * cmd , struct logical_volume * lv ,
activation_change_t activate ) ;
2008-12-19 17:22:48 +03:00
int lv_refresh ( struct cmd_context * cmd , struct logical_volume * lv ) ;
2008-12-22 12:00:51 +03:00
int vg_refresh_visible ( struct cmd_context * cmd , struct volume_group * vg ) ;
2009-09-30 00:22:35 +04:00
void lv_spawn_background_polling ( struct cmd_context * cmd ,
struct logical_volume * lv ) ;
2009-11-01 22:51:54 +03:00
int pvcreate_params_validate ( struct cmd_context * cmd ,
2009-10-06 00:03:54 +04:00
int argc , char * * argv ,
struct pvcreate_params * pp ) ;
2009-09-30 00:22:35 +04:00
2010-03-24 01:30:18 +03:00
int get_activation_monitoring_mode ( struct cmd_context * cmd ,
int * monitoring_mode ) ;
2013-03-06 14:58:09 +04:00
2013-06-27 13:22:02 +04:00
int get_pool_params ( struct cmd_context * cmd ,
2014-07-23 00:20:18 +04:00
const struct segment_type * segtype ,
2013-06-27 13:22:02 +04:00
int * passed_args ,
2014-07-23 00:20:18 +04:00
uint64_t * pool_metadata_size ,
int * pool_metadataspare ,
2012-11-15 17:48:32 +04:00
uint32_t * chunk_size ,
thin_discards_t * discards ,
int * zero ) ;
2013-03-11 15:37:09 +04:00
2010-04-13 05:54:32 +04:00
int get_stripe_params ( struct cmd_context * cmd , uint32_t * stripes ,
uint32_t * stripe_size ) ;
2011-01-24 16:38:31 +03:00
int change_tag ( struct cmd_context * cmd , struct volume_group * vg ,
struct logical_volume * lv , struct physical_volume * pv , int arg ) ;
2001-09-25 16:49:28 +04:00
# endif