1 /* $NetBSD: import-export.h,v 1.1.1.1 2008/12/22 00:18:16 haad Exp $ */ 2 3 /* 4 * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. 5 * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. 6 * 7 * This file is part of LVM2. 8 * 9 * This copyrighted material is made available to anyone wishing to use, 10 * modify, copy, or redistribute it subject to the terms and conditions 11 * of the GNU Lesser General Public License v.2.1. 12 * 13 * You should have received a copy of the GNU Lesser General Public License 14 * along with this program; if not, write to the Free Software Foundation, 15 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16 */ 17 18 #ifndef _LVM_TEXT_IMPORT_EXPORT_H 19 #define _LVM_TEXT_IMPORT_EXPORT_H 20 21 #include "config.h" 22 #include "lvm-types.h" 23 #include "metadata.h" 24 25 #include <stdio.h> 26 27 /* 28 * Constants to identify files this code can parse. 29 */ 30 #define CONTENTS_FIELD "contents" 31 #define CONTENTS_VALUE "Text Format Volume Group" 32 33 #define FORMAT_VERSION_FIELD "version" 34 #define FORMAT_VERSION_VALUE 1 35 36 /* 37 * VGs, PVs and LVs all have status bitsets, we gather together 38 * common code for reading and writing them. 39 */ 40 enum { 41 COMPATIBLE_FLAG = 0x0, 42 VG_FLAGS, 43 PV_FLAGS, 44 LV_FLAGS, 45 STATUS_FLAG = 0x8, 46 }; 47 48 struct text_vg_version_ops { 49 int (*check_version) (struct config_tree * cf); 50 struct volume_group *(*read_vg) (struct format_instance * fid, 51 struct config_tree * cf); 52 void (*read_desc) (struct dm_pool * mem, struct config_tree * cf, 53 time_t *when, char **desc); 54 const char *(*read_vgname) (const struct format_type *fmt, 55 struct config_tree *cft, 56 struct id *vgid, uint32_t *vgstatus, 57 char **creation_host); 58 }; 59 60 struct text_vg_version_ops *text_vg_vsn1_init(void); 61 62 int print_flags(uint32_t status, int type, char *buffer, size_t size); 63 int read_flags(uint32_t *status, int type, struct config_value *cv); 64 65 int print_tags(struct dm_list *tags, char *buffer, size_t size); 66 int read_tags(struct dm_pool *mem, struct dm_list *tags, struct config_value *cv); 67 68 int text_vg_export_file(struct volume_group *vg, const char *desc, FILE *fp); 69 int text_vg_export_raw(struct volume_group *vg, const char *desc, char **buf); 70 struct volume_group *text_vg_import_file(struct format_instance *fid, 71 const char *file, 72 time_t *when, char **desc); 73 struct volume_group *text_vg_import_fd(struct format_instance *fid, 74 const char *file, 75 struct device *dev, 76 off_t offset, uint32_t size, 77 off_t offset2, uint32_t size2, 78 checksum_fn_t checksum_fn, 79 uint32_t checksum, 80 time_t *when, char **desc); 81 const char *text_vgname_import(const struct format_type *fmt, 82 struct device *dev, 83 off_t offset, uint32_t size, 84 off_t offset2, uint32_t size2, 85 checksum_fn_t checksum_fn, uint32_t checksum, 86 struct id *vgid, uint32_t *vgstatus, 87 char **creation_host); 88 89 #endif 90