xref: /dflybsd-src/contrib/lvm2/dist/lib/activate/dev_manager.h (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
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