1 /* $NetBSD: lv_alloc.h,v 1.1.1.2 2009/02/18 11:17:09 haad Exp $ */ 2 3 /* 4 * Copyright (C) 2003-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_LV_ALLOC_H 19 20 struct lv_segment *alloc_lv_segment(struct dm_pool *mem, 21 const struct segment_type *segtype, 22 struct logical_volume *lv, 23 uint32_t le, uint32_t len, 24 uint32_t status, 25 uint32_t stripe_size, 26 struct logical_volume *log_lv, 27 uint32_t area_count, 28 uint32_t area_len, 29 uint32_t chunk_size, 30 uint32_t region_size, 31 uint32_t extents_copied); 32 33 struct lv_segment *alloc_snapshot_seg(struct logical_volume *lv, 34 uint32_t status, uint32_t old_le_count); 35 36 int set_lv_segment_area_pv(struct lv_segment *seg, uint32_t area_num, 37 struct physical_volume *pv, uint32_t pe); 38 int set_lv_segment_area_lv(struct lv_segment *seg, uint32_t area_num, 39 struct logical_volume *lv, uint32_t le, 40 uint32_t flags); 41 int move_lv_segment_area(struct lv_segment *seg_to, uint32_t area_to, 42 struct lv_segment *seg_from, uint32_t area_from); 43 void release_lv_segment_area(struct lv_segment *seg, uint32_t s, 44 uint32_t area_reduction); 45 46 struct alloc_handle; 47 struct alloc_handle *allocate_extents(struct volume_group *vg, 48 struct logical_volume *lv, 49 const struct segment_type *segtype, 50 uint32_t stripes, 51 uint32_t mirrors, uint32_t log_count, 52 uint32_t log_region_size, uint32_t extents, 53 struct dm_list *allocatable_pvs, 54 alloc_policy_t alloc, 55 struct dm_list *parallel_areas); 56 57 int lv_add_segment(struct alloc_handle *ah, 58 uint32_t first_area, uint32_t num_areas, 59 struct logical_volume *lv, 60 const struct segment_type *segtype, 61 uint32_t stripe_size, 62 uint32_t status, 63 uint32_t region_size, 64 struct logical_volume *log_lv); 65 66 int lv_add_mirror_areas(struct alloc_handle *ah, 67 struct logical_volume *lv, uint32_t le, 68 uint32_t region_size); 69 int lv_add_mirror_lvs(struct logical_volume *lv, 70 struct logical_volume **sub_lvs, 71 uint32_t num_extra_areas, 72 uint32_t status, uint32_t region_size); 73 74 int lv_add_log_segment(struct alloc_handle *ah, struct logical_volume *log_lv); 75 int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status, 76 uint32_t extents, const struct segment_type *segtype); 77 78 void alloc_destroy(struct alloc_handle *ah); 79 80 struct dm_list *build_parallel_areas_from_lv(struct cmd_context *cmd, 81 struct logical_volume *lv); 82 83 #endif 84