1 2 /* 3 * kernel/lvm_internal.h 4 * 5 * Copyright (C) 2001 Sistina Software 6 * 7 * 8 * LVM driver is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2, or (at your option) 11 * any later version. 12 * 13 * LVM driver is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with GNU CC; see the file COPYING. If not, write to 20 * the Free Software Foundation, 59 Temple Place - Suite 330, 21 * Boston, MA 02111-1307, USA. 22 * 23 */ 24 25 /* 26 * Changelog 27 * 28 * 05/01/2001 - Factored this file out of lvm.c (Joe Thornber) 29 * 11/01/2001 - Renamed lvm_internal and added declarations 30 * for lvm_fs.c stuff 31 * 32 */ 33 34 #ifndef LVM_INTERNAL_H 35 #define LVM_INTERNAL_H 36 37 #include <linux/lvm.h> 38 39 #define _LVM_INTERNAL_H_VERSION "LVM "LVM_RELEASE_NAME" ("LVM_RELEASE_DATE")" 40 41 /* global variables, defined in lvm.c */ 42 extern char *lvm_version; 43 extern ushort lvm_iop_version; 44 extern int loadtime; 45 extern const char *const lvm_name; 46 47 48 extern uint vg_count; 49 extern vg_t *vg[]; 50 extern struct file_operations lvm_chr_fops; 51 52 #ifndef uchar 53 typedef unsigned char uchar; 54 #endif 55 56 extern struct block_device_operations lvm_blk_dops; 57 58 #define lvm_sectsize(dev) get_hardsect_size(dev) 59 60 /* 2.4.8 had no global min/max macros, and 2.4.9's were flawed */ 61 62 /* debug macros */ 63 #ifdef DEBUG_IOCTL 64 #define P_IOCTL(fmt, args...) printk(KERN_DEBUG "lvm ioctl: " fmt, ## args) 65 #else 66 #define P_IOCTL(fmt, args...) 67 #endif 68 69 #ifdef DEBUG_MAP 70 #define P_MAP(fmt, args...) printk(KERN_DEBUG "lvm map: " fmt, ## args) 71 #else 72 #define P_MAP(fmt, args...) 73 #endif 74 75 #ifdef DEBUG_KFREE 76 #define P_KFREE(fmt, args...) printk(KERN_DEBUG "lvm kfree: " fmt, ## args) 77 #else 78 #define P_KFREE(fmt, args...) 79 #endif 80 81 #ifdef DEBUG_DEVICE 82 #define P_DEV(fmt, args...) printk(KERN_DEBUG "lvm device: " fmt, ## args) 83 #else 84 #define P_DEV(fmt, args...) 85 #endif 86 87 88 /* lvm-snap.c */ 89 int lvm_get_blksize(kdev_t); 90 int lvm_snapshot_alloc(lv_t *); 91 int lvm_snapshot_fill_COW_page(vg_t *, lv_t *); 92 int lvm_snapshot_COW(kdev_t, ulong, ulong, ulong, vg_t * vg, lv_t *); 93 int lvm_snapshot_remap_block(kdev_t *, ulong *, ulong, lv_t *); 94 void lvm_snapshot_release(lv_t *); 95 int lvm_write_COW_table_block(vg_t *, lv_t *); 96 void lvm_hash_link(lv_block_exception_t *, kdev_t, ulong, lv_t *); 97 int lvm_snapshot_alloc_hash_table(lv_t *); 98 void lvm_drop_snapshot(vg_t * vg, lv_t *, const char *); 99 100 101 /* lvm_fs.c */ 102 void lvm_init_fs(void); 103 void lvm_fin_fs(void); 104 105 void lvm_fs_create_vg(vg_t * vg_ptr); 106 void lvm_fs_remove_vg(vg_t * vg_ptr); 107 devfs_handle_t lvm_fs_create_lv(vg_t * vg_ptr, lv_t * lv); 108 void lvm_fs_remove_lv(vg_t * vg_ptr, lv_t * lv); 109 void lvm_fs_create_pv(vg_t * vg_ptr, pv_t * pv); 110 void lvm_fs_remove_pv(vg_t * vg_ptr, pv_t * pv); 111 112 #endif 113