186d7f5d3SJohn Marino /* $NetBSD: dev_manager.h,v 1.1.1.2 2009/12/02 00:26:22 haad Exp $ */ 286d7f5d3SJohn Marino 386d7f5d3SJohn Marino /* 486d7f5d3SJohn Marino * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. 586d7f5d3SJohn Marino * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. 686d7f5d3SJohn Marino * 786d7f5d3SJohn Marino * This file is part of LVM2. 886d7f5d3SJohn Marino * 986d7f5d3SJohn Marino * This copyrighted material is made available to anyone wishing to use, 1086d7f5d3SJohn Marino * modify, copy, or redistribute it subject to the terms and conditions 1186d7f5d3SJohn Marino * of the GNU Lesser General Public License v.2.1. 1286d7f5d3SJohn Marino * 1386d7f5d3SJohn Marino * You should have received a copy of the GNU Lesser General Public License 1486d7f5d3SJohn Marino * along with this program; if not, write to the Free Software Foundation, 1586d7f5d3SJohn Marino * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 1686d7f5d3SJohn Marino */ 1786d7f5d3SJohn Marino 1886d7f5d3SJohn Marino #ifndef _LVM_DEV_MANAGER_H 1986d7f5d3SJohn Marino #define _LVM_DEV_MANAGER_H 2086d7f5d3SJohn Marino 2186d7f5d3SJohn Marino #include "metadata-exported.h" 2286d7f5d3SJohn Marino 2386d7f5d3SJohn Marino struct logical_volume; 2486d7f5d3SJohn Marino struct volume_group; 2586d7f5d3SJohn Marino struct cmd_context; 2686d7f5d3SJohn Marino struct dev_manager; 2786d7f5d3SJohn Marino struct dm_info; 2886d7f5d3SJohn Marino struct device; 2986d7f5d3SJohn Marino 3086d7f5d3SJohn Marino /* 3186d7f5d3SJohn Marino * Constructor and destructor. 3286d7f5d3SJohn Marino */ 3386d7f5d3SJohn Marino struct dev_manager *dev_manager_create(struct cmd_context *cmd, 3486d7f5d3SJohn Marino const char *vg_name); 3586d7f5d3SJohn Marino void dev_manager_destroy(struct dev_manager *dm); 3686d7f5d3SJohn Marino void dev_manager_release(void); 3786d7f5d3SJohn Marino void dev_manager_exit(void); 3886d7f5d3SJohn Marino 3986d7f5d3SJohn Marino /* 4086d7f5d3SJohn Marino * The device handler is responsible for creating all the layered 4186d7f5d3SJohn Marino * dm devices, and ensuring that all constraints are maintained 4286d7f5d3SJohn Marino * (eg, an origin is created before its snapshot, but is not 4386d7f5d3SJohn Marino * unsuspended until the snapshot is also created.) 4486d7f5d3SJohn Marino */ 4586d7f5d3SJohn Marino int dev_manager_info(struct dm_pool *mem, const char *name, 4686d7f5d3SJohn Marino const struct logical_volume *lv, 4786d7f5d3SJohn Marino int mknodes, int with_open_count, int with_read_ahead, 4886d7f5d3SJohn Marino struct dm_info *info, uint32_t *read_ahead); 4986d7f5d3SJohn Marino int dev_manager_snapshot_percent(struct dev_manager *dm, 5086d7f5d3SJohn Marino const struct logical_volume *lv, 5186d7f5d3SJohn Marino float *percent, 5286d7f5d3SJohn Marino percent_range_t *percent_range); 5386d7f5d3SJohn Marino int dev_manager_mirror_percent(struct dev_manager *dm, 5486d7f5d3SJohn Marino struct logical_volume *lv, int wait, 5586d7f5d3SJohn Marino float *percent, percent_range_t *percent_range, 5686d7f5d3SJohn Marino uint32_t *event_nr); 5786d7f5d3SJohn Marino int dev_manager_suspend(struct dev_manager *dm, struct logical_volume *lv, 5886d7f5d3SJohn Marino int lockfs, int flush_required); 5986d7f5d3SJohn Marino int dev_manager_activate(struct dev_manager *dm, struct logical_volume *lv); 6086d7f5d3SJohn Marino int dev_manager_preload(struct dev_manager *dm, struct logical_volume *lv, 6186d7f5d3SJohn Marino int *flush_required); 6286d7f5d3SJohn Marino int dev_manager_deactivate(struct dev_manager *dm, struct logical_volume *lv); 6386d7f5d3SJohn Marino 6486d7f5d3SJohn Marino int dev_manager_lv_mknodes(const struct logical_volume *lv); 6586d7f5d3SJohn Marino int dev_manager_lv_rmnodes(const struct logical_volume *lv); 6686d7f5d3SJohn Marino 6786d7f5d3SJohn Marino /* 6886d7f5d3SJohn Marino * Put the desired changes into effect. 6986d7f5d3SJohn Marino */ 7086d7f5d3SJohn Marino int dev_manager_execute(struct dev_manager *dm); 7186d7f5d3SJohn Marino 7286d7f5d3SJohn Marino int dev_manager_device_uses_vg(struct device *dev, 7386d7f5d3SJohn Marino struct volume_group *vg); 7486d7f5d3SJohn Marino 7586d7f5d3SJohn Marino #endif 76