1*86d7f5d3SJohn Marino /* $NetBSD: lv_alloc.h,v 1.1.1.2 2009/02/18 11:16:47 haad Exp $ */ 2*86d7f5d3SJohn Marino 3*86d7f5d3SJohn Marino /* 4*86d7f5d3SJohn Marino * Copyright (C) 2003-2004 Sistina Software, Inc. All rights reserved. 5*86d7f5d3SJohn Marino * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. 6*86d7f5d3SJohn Marino * 7*86d7f5d3SJohn Marino * This file is part of LVM2. 8*86d7f5d3SJohn Marino * 9*86d7f5d3SJohn Marino * This copyrighted material is made available to anyone wishing to use, 10*86d7f5d3SJohn Marino * modify, copy, or redistribute it subject to the terms and conditions 11*86d7f5d3SJohn Marino * of the GNU Lesser General Public License v.2.1. 12*86d7f5d3SJohn Marino * 13*86d7f5d3SJohn Marino * You should have received a copy of the GNU Lesser General Public License 14*86d7f5d3SJohn Marino * along with this program; if not, write to the Free Software Foundation, 15*86d7f5d3SJohn Marino * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16*86d7f5d3SJohn Marino */ 17*86d7f5d3SJohn Marino 18*86d7f5d3SJohn Marino #ifndef _LVM_LV_ALLOC_H 19*86d7f5d3SJohn Marino 20*86d7f5d3SJohn Marino struct lv_segment *alloc_lv_segment(struct dm_pool *mem, 21*86d7f5d3SJohn Marino const struct segment_type *segtype, 22*86d7f5d3SJohn Marino struct logical_volume *lv, 23*86d7f5d3SJohn Marino uint32_t le, uint32_t len, 24*86d7f5d3SJohn Marino uint32_t status, 25*86d7f5d3SJohn Marino uint32_t stripe_size, 26*86d7f5d3SJohn Marino struct logical_volume *log_lv, 27*86d7f5d3SJohn Marino uint32_t area_count, 28*86d7f5d3SJohn Marino uint32_t area_len, 29*86d7f5d3SJohn Marino uint32_t chunk_size, 30*86d7f5d3SJohn Marino uint32_t region_size, 31*86d7f5d3SJohn Marino uint32_t extents_copied); 32*86d7f5d3SJohn Marino 33*86d7f5d3SJohn Marino struct lv_segment *alloc_snapshot_seg(struct logical_volume *lv, 34*86d7f5d3SJohn Marino uint32_t status, uint32_t old_le_count); 35*86d7f5d3SJohn Marino 36*86d7f5d3SJohn Marino int set_lv_segment_area_pv(struct lv_segment *seg, uint32_t area_num, 37*86d7f5d3SJohn Marino struct physical_volume *pv, uint32_t pe); 38*86d7f5d3SJohn Marino int set_lv_segment_area_lv(struct lv_segment *seg, uint32_t area_num, 39*86d7f5d3SJohn Marino struct logical_volume *lv, uint32_t le, 40*86d7f5d3SJohn Marino uint32_t flags); 41*86d7f5d3SJohn Marino int move_lv_segment_area(struct lv_segment *seg_to, uint32_t area_to, 42*86d7f5d3SJohn Marino struct lv_segment *seg_from, uint32_t area_from); 43*86d7f5d3SJohn Marino void release_lv_segment_area(struct lv_segment *seg, uint32_t s, 44*86d7f5d3SJohn Marino uint32_t area_reduction); 45*86d7f5d3SJohn Marino 46*86d7f5d3SJohn Marino struct alloc_handle; 47*86d7f5d3SJohn Marino struct alloc_handle *allocate_extents(struct volume_group *vg, 48*86d7f5d3SJohn Marino struct logical_volume *lv, 49*86d7f5d3SJohn Marino const struct segment_type *segtype, 50*86d7f5d3SJohn Marino uint32_t stripes, 51*86d7f5d3SJohn Marino uint32_t mirrors, uint32_t log_count, 52*86d7f5d3SJohn Marino uint32_t log_region_size, uint32_t extents, 53*86d7f5d3SJohn Marino struct dm_list *allocatable_pvs, 54*86d7f5d3SJohn Marino alloc_policy_t alloc, 55*86d7f5d3SJohn Marino struct dm_list *parallel_areas); 56*86d7f5d3SJohn Marino 57*86d7f5d3SJohn Marino int lv_add_segment(struct alloc_handle *ah, 58*86d7f5d3SJohn Marino uint32_t first_area, uint32_t num_areas, 59*86d7f5d3SJohn Marino struct logical_volume *lv, 60*86d7f5d3SJohn Marino const struct segment_type *segtype, 61*86d7f5d3SJohn Marino uint32_t stripe_size, 62*86d7f5d3SJohn Marino uint32_t status, 63*86d7f5d3SJohn Marino uint32_t region_size, 64*86d7f5d3SJohn Marino struct logical_volume *log_lv); 65*86d7f5d3SJohn Marino 66*86d7f5d3SJohn Marino int lv_add_mirror_areas(struct alloc_handle *ah, 67*86d7f5d3SJohn Marino struct logical_volume *lv, uint32_t le, 68*86d7f5d3SJohn Marino uint32_t region_size); 69*86d7f5d3SJohn Marino int lv_add_mirror_lvs(struct logical_volume *lv, 70*86d7f5d3SJohn Marino struct logical_volume **sub_lvs, 71*86d7f5d3SJohn Marino uint32_t num_extra_areas, 72*86d7f5d3SJohn Marino uint32_t status, uint32_t region_size); 73*86d7f5d3SJohn Marino 74*86d7f5d3SJohn Marino int lv_add_log_segment(struct alloc_handle *ah, struct logical_volume *log_lv); 75*86d7f5d3SJohn Marino int lv_add_virtual_segment(struct logical_volume *lv, uint32_t status, 76*86d7f5d3SJohn Marino uint32_t extents, const struct segment_type *segtype); 77*86d7f5d3SJohn Marino 78*86d7f5d3SJohn Marino void alloc_destroy(struct alloc_handle *ah); 79*86d7f5d3SJohn Marino 80*86d7f5d3SJohn Marino struct dm_list *build_parallel_areas_from_lv(struct cmd_context *cmd, 81*86d7f5d3SJohn Marino struct logical_volume *lv); 82*86d7f5d3SJohn Marino 83*86d7f5d3SJohn Marino #endif 84