2003-09-15 22:22:50 +04:00
/*
2004-03-30 23:35:44 +04:00
* Copyright ( C ) 2003 - 2004 Sistina Software , Inc . All rights reserved .
* Copyright ( C ) 2004 Red Hat , Inc . All rights reserved .
2003-09-15 22:22:50 +04:00
*
2004-03-30 23:35:44 +04:00
* This file is part of LVM2 .
*
* This copyrighted material is made available to anyone wishing to use ,
* modify , copy , or redistribute it subject to the terms and conditions
* of the GNU General Public License v .2 .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software Foundation ,
* Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
2003-09-15 22:22:50 +04:00
*/
# ifndef _LVM_LV_ALLOC_H
2005-10-17 03:03:59 +04:00
struct lv_segment * alloc_lv_segment ( struct dm_pool * mem ,
2006-05-10 01:23:51 +04:00
const struct segment_type * segtype ,
2005-04-22 19:44:00 +04:00
struct logical_volume * lv ,
uint32_t le , uint32_t len ,
uint32_t status ,
uint32_t stripe_size ,
2005-06-01 20:51:55 +04:00
struct logical_volume * log_lv ,
2005-04-22 19:44:00 +04:00
uint32_t area_count ,
uint32_t area_len ,
uint32_t chunk_size ,
2005-06-01 20:51:55 +04:00
uint32_t region_size ,
2005-04-22 19:44:00 +04:00
uint32_t extents_copied ) ;
2005-04-07 16:39:44 +04:00
struct lv_segment * alloc_snapshot_seg ( struct logical_volume * lv ,
2005-06-01 20:51:55 +04:00
uint32_t status , uint32_t old_le_count ) ;
2005-04-07 16:39:44 +04:00
2005-05-03 21:28:23 +04:00
int set_lv_segment_area_pv ( struct lv_segment * seg , uint32_t area_num ,
struct physical_volume * pv , uint32_t pe ) ;
2005-04-22 19:43:02 +04:00
void set_lv_segment_area_lv ( struct lv_segment * seg , uint32_t area_num ,
2005-06-03 18:49:51 +04:00
struct logical_volume * lv , uint32_t le ,
uint32_t flags ) ;
2005-06-14 21:54:48 +04:00
int move_lv_segment_area ( struct lv_segment * seg_to , uint32_t area_to ,
struct lv_segment * seg_from , uint32_t area_from ) ;
void release_lv_segment_area ( struct lv_segment * seg , uint32_t s ,
uint32_t area_reduction ) ;
2005-04-22 19:43:02 +04:00
2005-06-01 20:51:55 +04:00
struct alloc_handle ;
struct alloc_handle * allocate_extents ( struct volume_group * vg ,
struct logical_volume * lv ,
2006-05-10 01:23:51 +04:00
const struct segment_type * segtype ,
2005-06-01 20:51:55 +04:00
uint32_t stripes ,
uint32_t mirrors , uint32_t log_count ,
uint32_t extents ,
struct physical_volume * mirrored_pv ,
uint32_t mirrored_pe ,
uint32_t status ,
struct list * allocatable_pvs ,
2005-11-24 23:58:44 +03:00
alloc_policy_t alloc ,
struct list * parallel_areas ) ;
2005-06-01 20:51:55 +04:00
int lv_add_segment ( struct alloc_handle * ah ,
uint32_t first_area , uint32_t num_areas ,
struct logical_volume * lv ,
2006-05-10 01:23:51 +04:00
const struct segment_type * segtype ,
2005-06-01 20:51:55 +04:00
uint32_t stripe_size ,
struct physical_volume * mirrored_pv ,
uint32_t mirrored_pe ,
uint32_t status ,
uint32_t region_size ,
struct logical_volume * log_lv ) ;
int lv_add_log_segment ( struct alloc_handle * ah , struct logical_volume * log_lv ) ;
int lv_add_virtual_segment ( struct logical_volume * lv , uint32_t status ,
2006-05-10 01:23:51 +04:00
uint32_t extents , const struct segment_type * segtype ) ;
2005-06-03 18:49:51 +04:00
int lv_add_mirror_segment ( struct alloc_handle * ah ,
struct logical_volume * lv ,
struct logical_volume * * sub_lvs ,
uint32_t mirrors ,
2006-05-10 01:23:51 +04:00
const struct segment_type * segtype ,
2005-06-03 18:49:51 +04:00
uint32_t status ,
uint32_t region_size ,
struct logical_volume * log_lv ) ;
2005-10-28 16:48:50 +04:00
int lv_add_more_mirrored_areas ( struct logical_volume * lv ,
struct logical_volume * * sub_lvs ,
uint32_t new_area_count ,
uint32_t status ) ;
2005-06-01 20:51:55 +04:00
void alloc_destroy ( struct alloc_handle * ah ) ;
2005-11-24 23:58:44 +03:00
struct list * build_parallel_areas_from_lv ( struct cmd_context * cmd ,
struct logical_volume * lv ) ;
2003-09-15 22:22:50 +04:00
# endif