2001-11-21 12:20:05 +03: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 - 2006 Red Hat , Inc . All rights reserved .
2001-11-21 12:20:05 +03: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-11-21 12:20:05 +03:00
*/
# ifndef _LVM_TEXT_IMPORT_EXPORT_H
# define _LVM_TEXT_IMPORT_EXPORT_H
2001-12-11 15:16:58 +03:00
# include "config.h"
2001-12-20 14:52:54 +03:00
# include "metadata.h"
2015-03-19 02:43:02 +03:00
# include "lvmcache.h"
2001-12-20 14:52:54 +03:00
# include <stdio.h>
2001-12-11 15:16:58 +03:00
2002-07-02 22:47:43 +04:00
/*
2002-07-11 18:09:26 +04:00
* Constants to identify files this code can parse .
2002-07-02 22:47:43 +04:00
*/
# define CONTENTS_FIELD "contents"
# define CONTENTS_VALUE "Text Format Volume Group"
# define FORMAT_VERSION_FIELD "version"
# define FORMAT_VERSION_VALUE 1
/*
* VGs , PVs and LVs all have status bitsets , we gather together
* common code for reading and writing them .
*/
2001-12-11 15:16:58 +03:00
enum {
2008-07-10 15:30:57 +04:00
COMPATIBLE_FLAG = 0x0 ,
2001-12-11 15:16:58 +03:00
VG_FLAGS ,
PV_FLAGS ,
2008-07-10 15:30:57 +04:00
LV_FLAGS ,
STATUS_FLAG = 0x8 ,
2001-12-11 15:16:58 +03:00
} ;
2002-11-18 17:04:08 +03:00
struct text_vg_version_ops {
2011-08-30 18:55:15 +04:00
int ( * check_version ) ( const struct dm_config_tree * cf ) ;
2002-11-18 17:04:08 +03:00
struct volume_group * ( * read_vg ) ( struct format_instance * fid ,
2011-08-30 18:55:15 +04:00
const struct dm_config_tree * cf ,
2010-03-17 05:11:18 +03:00
unsigned use_cached_pvs ) ;
2011-08-30 18:55:15 +04:00
void ( * read_desc ) ( struct dm_pool * mem , const struct dm_config_tree * cf ,
2002-11-18 17:04:08 +03:00
time_t * when , char * * desc ) ;
2015-03-19 02:43:02 +03:00
int ( * read_vgname ) ( const struct format_type * fmt ,
const struct dm_config_tree * cft ,
struct lvmcache_vgsummary * vgsummary ) ;
2002-11-18 17:04:08 +03:00
} ;
struct text_vg_version_ops * text_vg_vsn1_init ( void ) ;
2009-11-25 01:55:55 +03:00
int print_flags ( uint64_t status , int type , char * buffer , size_t size ) ;
2011-08-30 18:55:15 +04:00
int read_flags ( uint64_t * status , int type , const struct dm_config_value * cv ) ;
2001-12-11 15:16:58 +03:00
2010-09-20 18:23:20 +04:00
char * alloc_printed_tags ( struct dm_list * tags ) ;
2011-08-30 18:55:15 +04:00
int read_tags ( struct dm_pool * mem , struct dm_list * tags , const struct dm_config_value * cv ) ;
2004-03-08 20:19:15 +03:00
2002-11-18 17:04:08 +03:00
int text_vg_export_file ( struct volume_group * vg , const char * desc , FILE * fp ) ;
2011-09-01 14:25:22 +04:00
size_t text_vg_export_raw ( struct volume_group * vg , const char * desc , char * * buf ) ;
2002-11-18 17:04:08 +03:00
struct volume_group * text_vg_import_file ( struct format_instance * fid ,
const char * file ,
time_t * when , char * * desc ) ;
struct volume_group * text_vg_import_fd ( struct format_instance * fid ,
const char * file ,
2015-03-19 02:43:02 +03:00
struct cached_vg_fmtdata * * vg_fmtdata ,
unsigned * use_previous_vg ,
2012-02-29 06:35:35 +04:00
int single_device ,
2003-07-05 02:34:56 +04:00
struct device * dev ,
2002-11-18 17:04:08 +03:00
off_t offset , uint32_t size ,
off_t offset2 , uint32_t size2 ,
checksum_fn_t checksum_fn ,
uint32_t checksum ,
time_t * when , char * * desc ) ;
2015-03-19 02:43:02 +03:00
int text_vgname_import ( const struct format_type * fmt ,
struct device * dev ,
off_t offset , uint32_t size ,
off_t offset2 , uint32_t size2 ,
checksum_fn_t checksum_fn ,
int checksum_only ,
struct lvmcache_vgsummary * vgsummary ) ;
2001-11-21 12:20:05 +03:00
# endif