/* * kernel/lvm_internal.h * * Copyright (C) 2001 Sistina Software * * * LVM driver is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * LVM driver is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with GNU CC; see the file COPYING. If not, write to * the Free Software Foundation, 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * */ /* * Changelog * * 05/01/2001 - Factored this file out of lvm.c (Joe Thornber) * 11/01/2001 - Renamed lvm_internal and added declarations * for lvm_fs.c stuff * */ #ifndef LVM_INTERNAL_H #define LVM_INTERNAL_H #include #define _LVM_INTERNAL_H_VERSION "LVM "LVM_RELEASE_NAME" ("LVM_RELEASE_DATE")" /* global variables, defined in lvm.c */ extern char *lvm_version; extern ushort lvm_iop_version; extern int loadtime; extern const char *const lvm_name; extern uint vg_count; extern vg_t *vg[]; extern struct file_operations lvm_chr_fops; #ifndef uchar typedef unsigned char uchar; #endif extern struct block_device_operations lvm_blk_dops; #define lvm_sectsize(dev) get_hardsect_size(dev) /* 2.4.8 had no global min/max macros, and 2.4.9's were flawed */ /* debug macros */ #ifdef DEBUG_IOCTL #define P_IOCTL(fmt, args...) printk(KERN_DEBUG "lvm ioctl: " fmt, ## args) #else #define P_IOCTL(fmt, args...) #endif #ifdef DEBUG_MAP #define P_MAP(fmt, args...) printk(KERN_DEBUG "lvm map: " fmt, ## args) #else #define P_MAP(fmt, args...) #endif #ifdef DEBUG_KFREE #define P_KFREE(fmt, args...) printk(KERN_DEBUG "lvm kfree: " fmt, ## args) #else #define P_KFREE(fmt, args...) #endif #ifdef DEBUG_DEVICE #define P_DEV(fmt, args...) printk(KERN_DEBUG "lvm device: " fmt, ## args) #else #define P_DEV(fmt, args...) #endif /* lvm-snap.c */ int lvm_get_blksize(kdev_t); int lvm_snapshot_alloc(lv_t *); int lvm_snapshot_fill_COW_page(vg_t *, lv_t *); int lvm_snapshot_COW(kdev_t, ulong, ulong, ulong, vg_t * vg, lv_t *); int lvm_snapshot_remap_block(kdev_t *, ulong *, ulong, lv_t *); void lvm_snapshot_release(lv_t *); int lvm_write_COW_table_block(vg_t *, lv_t *); void lvm_hash_link(lv_block_exception_t *, kdev_t, ulong, lv_t *); int lvm_snapshot_alloc_hash_table(lv_t *); void lvm_drop_snapshot(vg_t * vg, lv_t *, const char *); /* lvm_fs.c */ void lvm_init_fs(void); void lvm_fin_fs(void); void lvm_fs_create_vg(vg_t * vg_ptr); void lvm_fs_remove_vg(vg_t * vg_ptr); devfs_handle_t lvm_fs_create_lv(vg_t * vg_ptr, lv_t * lv); void lvm_fs_remove_lv(vg_t * vg_ptr, lv_t * lv); void lvm_fs_create_pv(vg_t * vg_ptr, pv_t * pv); void lvm_fs_remove_pv(vg_t * vg_ptr, pv_t * pv); #endif