2002-02-11 23:50:53 +03:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2001 - 2004 Sistina Software , Inc . All rights reserved .
2009-02-23 00:14:37 +03:00
* Copyright ( C ) 2004 - 2009 Red Hat , Inc . All rights reserved .
2002-02-11 23:50:53 +03:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2 .
2002-02-11 23:50:53 +03: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 .
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
2002-02-11 23:50:53 +03:00
*/
# ifndef _LVM_TOOLCONTEXT_H
# define _LVM_TOOLCONTEXT_H
# include "dev-cache.h"
2002-11-18 17:01:16 +03:00
# include <stdio.h>
# include <limits.h>
/*
* Config options that can be changed while commands are processed
*/
struct config_info {
int debug ;
int verbose ;
int test ;
int syslog ;
int activation ;
2002-12-12 23:55:49 +03:00
int suffix ;
2002-11-18 17:01:16 +03:00
int archive ; /* should we archive ? */
int backup ; /* should we backup ? */
2007-11-09 19:51:54 +03:00
int read_ahead ; /* DM_READ_AHEAD_NONE or _AUTO */
2008-04-03 01:23:39 +04:00
int cache_vgmetadata ;
2005-04-06 17:47:41 +04:00
const char * msg_prefix ;
2002-11-18 17:01:16 +03:00
struct format_type * fmt ;
2005-04-06 17:47:41 +04:00
uint64_t unit_factor ;
int cmd_name ; /* Show command name? */
2002-11-18 17:01:16 +03:00
mode_t umask ;
2005-04-06 17:47:41 +04:00
char unit_type ;
char _padding [ 1 ] ;
2002-11-18 17:01:16 +03:00
} ;
2004-05-04 22:28:15 +04:00
struct config_tree ;
2005-05-17 17:46:38 +04:00
struct archive_params ;
struct backup_params ;
2004-05-04 22:28:15 +04:00
2002-11-18 17:01:16 +03:00
/* FIXME Split into tool & library contexts */
2002-02-11 23:50:53 +03:00
/* command-instance-related variables needed by library */
struct cmd_context {
2005-10-17 03:03:59 +04:00
struct dm_pool * libmem ; /* For permanent config data */
struct dm_pool * mem ; /* Transient: Cleared between each command */
2002-02-11 23:50:53 +03:00
2002-12-20 02:25:55 +03:00
const struct format_type * fmt ; /* Current format to use by default */
2002-11-18 17:01:16 +03:00
struct format_type * fmt_backup ; /* Format to use for backups */
2002-04-24 22:20:51 +04:00
2008-11-04 01:14:30 +03:00
struct dm_list formats ; /* Available formats */
struct dm_list segtypes ; /* Available segment types */
2004-03-08 20:25:59 +03:00
const char * hostname ;
2004-04-08 19:23:23 +04:00
const char * kernel_vsn ;
2002-02-11 23:50:53 +03:00
2008-12-07 07:27:56 +03:00
unsigned rand_seed ;
2009-07-13 23:49:48 +04:00
const char * cmd_line ;
2002-02-11 23:50:53 +03:00
struct command * command ;
2003-05-06 16:00:51 +04:00
char * * argv ;
2008-09-19 10:42:00 +04:00
unsigned is_long_lived : 1 ; /* Optimises persistent_filter handling */
unsigned handles_missing_pvs : 1 ;
2008-09-19 11:12:45 +04:00
unsigned partial_activation : 1 ;
2002-11-18 17:01:16 +03:00
struct dev_filter * filter ;
int dump_filter ; /* Dump filter when exiting? */
2008-11-04 01:14:30 +03:00
struct dm_list config_files ;
2004-05-04 22:28:15 +04:00
int config_valid ;
2004-03-08 21:28:45 +03:00
struct config_tree * cft ;
2006-05-16 20:48:31 +04:00
struct config_tree * cft_override ;
2002-11-18 17:01:16 +03:00
struct config_info default_settings ;
struct config_info current_settings ;
2005-05-17 17:46:38 +04:00
struct archive_params * archive_params ;
struct backup_params * backup_params ;
2008-09-19 10:42:00 +04:00
const char * stripe_filler ;
2005-05-17 17:46:38 +04:00
2004-03-08 21:13:22 +03:00
/* List of defined tags */
2008-11-04 01:14:30 +03:00
struct dm_list tags ;
2004-05-04 22:28:15 +04:00
int hosttags ;
2004-03-08 21:13:22 +03:00
2009-02-23 00:14:37 +03:00
char system_dir [ PATH_MAX ] ;
2002-11-18 17:01:16 +03:00
char dev_dir [ PATH_MAX ] ;
char proc_dir [ PATH_MAX ] ;
2008-09-19 07:42:37 +04:00
char sysfs_dir [ PATH_MAX ] ;
2002-02-11 23:50:53 +03:00
} ;
2009-02-23 00:14:37 +03:00
/*
* system_dir may be NULL to use the default value .
* The environment variable LVM_SYSTEM_DIR always takes precedence .
*/
struct cmd_context * create_toolcontext ( unsigned is_long_lived ,
const char * system_dir ) ;
2002-11-18 17:01:16 +03:00
void destroy_toolcontext ( struct cmd_context * cmd ) ;
2004-03-08 21:13:22 +03:00
int refresh_toolcontext ( struct cmd_context * cmd ) ;
2004-05-04 22:28:15 +04:00
int config_files_changed ( struct cmd_context * cmd ) ;
2008-04-08 16:49:21 +04:00
int init_lvmcache_orphans ( struct cmd_context * cmd ) ;
2002-11-18 17:01:16 +03:00
2002-02-11 23:50:53 +03:00
# endif