186d7f5d3SJohn Marino /* $NetBSD: activate.h,v 1.1.1.2 2009/12/02 00:26:23 haad Exp $ */ 286d7f5d3SJohn Marino 386d7f5d3SJohn Marino /* 486d7f5d3SJohn Marino * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved. 586d7f5d3SJohn Marino * Copyright (C) 2004-2007 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_ACTIVATE_H 1986d7f5d3SJohn Marino #define LVM_ACTIVATE_H 2086d7f5d3SJohn Marino 2186d7f5d3SJohn Marino #include "metadata-exported.h" 2286d7f5d3SJohn Marino 2386d7f5d3SJohn Marino struct lvinfo { 2486d7f5d3SJohn Marino int exists; 2586d7f5d3SJohn Marino int suspended; 2686d7f5d3SJohn Marino unsigned int open_count; 2786d7f5d3SJohn Marino int major; 2886d7f5d3SJohn Marino int minor; 2986d7f5d3SJohn Marino int read_only; 3086d7f5d3SJohn Marino int live_table; 3186d7f5d3SJohn Marino int inactive_table; 3286d7f5d3SJohn Marino uint32_t read_ahead; 3386d7f5d3SJohn Marino }; 3486d7f5d3SJohn Marino 3586d7f5d3SJohn Marino /* target attribute flags */ 3686d7f5d3SJohn Marino #define MIRROR_LOG_CLUSTERED 0x00000001U 3786d7f5d3SJohn Marino 3886d7f5d3SJohn Marino void set_activation(int activation); 3986d7f5d3SJohn Marino int activation(void); 4086d7f5d3SJohn Marino 4186d7f5d3SJohn Marino int driver_version(char *version, size_t size); 4286d7f5d3SJohn Marino int library_version(char *version, size_t size); 4386d7f5d3SJohn Marino int lvm1_present(struct cmd_context *cmd); 4486d7f5d3SJohn Marino 4586d7f5d3SJohn Marino int module_present(struct cmd_context *cmd, const char *target_name); 4686d7f5d3SJohn Marino int target_present(struct cmd_context *cmd, const char *target_name, 4786d7f5d3SJohn Marino int use_modprobe); 4886d7f5d3SJohn Marino int target_version(const char *target_name, uint32_t *maj, 4986d7f5d3SJohn Marino uint32_t *min, uint32_t *patchlevel); 5086d7f5d3SJohn Marino int list_segment_modules(struct dm_pool *mem, const struct lv_segment *seg, 5186d7f5d3SJohn Marino struct dm_list *modules); 5286d7f5d3SJohn Marino int list_lv_modules(struct dm_pool *mem, const struct logical_volume *lv, 5386d7f5d3SJohn Marino struct dm_list *modules); 5486d7f5d3SJohn Marino 5586d7f5d3SJohn Marino void activation_release(void); 5686d7f5d3SJohn Marino void activation_exit(void); 5786d7f5d3SJohn Marino 5886d7f5d3SJohn Marino int lv_suspend(struct cmd_context *cmd, const char *lvid_s); 5986d7f5d3SJohn Marino int lv_suspend_if_active(struct cmd_context *cmd, const char *lvid_s); 6086d7f5d3SJohn Marino int lv_resume(struct cmd_context *cmd, const char *lvid_s); 6186d7f5d3SJohn Marino int lv_resume_if_active(struct cmd_context *cmd, const char *lvid_s); 6286d7f5d3SJohn Marino int lv_activate(struct cmd_context *cmd, const char *lvid_s, int exclusive); 6386d7f5d3SJohn Marino int lv_activate_with_filter(struct cmd_context *cmd, const char *lvid_s, 6486d7f5d3SJohn Marino int exclusive); 6586d7f5d3SJohn Marino int lv_deactivate(struct cmd_context *cmd, const char *lvid_s); 6686d7f5d3SJohn Marino 6786d7f5d3SJohn Marino int lv_mknodes(struct cmd_context *cmd, const struct logical_volume *lv); 6886d7f5d3SJohn Marino 6986d7f5d3SJohn Marino /* 7086d7f5d3SJohn Marino * Returns 1 if info structure has been populated, else 0. 7186d7f5d3SJohn Marino */ 7286d7f5d3SJohn Marino int lv_info(struct cmd_context *cmd, const struct logical_volume *lv, struct lvinfo *info, 7386d7f5d3SJohn Marino int with_open_count, int with_read_ahead); 7486d7f5d3SJohn Marino int lv_info_by_lvid(struct cmd_context *cmd, const char *lvid_s, 7586d7f5d3SJohn Marino struct lvinfo *info, int with_open_count, int with_read_ahead); 7686d7f5d3SJohn Marino 7786d7f5d3SJohn Marino /* 7886d7f5d3SJohn Marino * Returns 1 if activate_lv has been set: 1 = activate; 0 = don't. 7986d7f5d3SJohn Marino */ 8086d7f5d3SJohn Marino int lv_activation_filter(struct cmd_context *cmd, const char *lvid_s, 8186d7f5d3SJohn Marino int *activate_lv); 8286d7f5d3SJohn Marino 8386d7f5d3SJohn Marino /* 8486d7f5d3SJohn Marino * Returns 1 if percent has been set, else 0. 8586d7f5d3SJohn Marino */ 8686d7f5d3SJohn Marino int lv_snapshot_percent(const struct logical_volume *lv, float *percent, 8786d7f5d3SJohn Marino percent_range_t *percent_range); 8886d7f5d3SJohn Marino int lv_mirror_percent(struct cmd_context *cmd, struct logical_volume *lv, 8986d7f5d3SJohn Marino int wait, float *percent, percent_range_t *percent_range, 9086d7f5d3SJohn Marino uint32_t *event_nr); 9186d7f5d3SJohn Marino 9286d7f5d3SJohn Marino /* 9386d7f5d3SJohn Marino * Return number of LVs in the VG that are active. 9486d7f5d3SJohn Marino */ 9586d7f5d3SJohn Marino int lvs_in_vg_activated(struct volume_group *vg); 9686d7f5d3SJohn Marino int lvs_in_vg_activated_by_uuid_only(struct volume_group *vg); 9786d7f5d3SJohn Marino int lvs_in_vg_opened(const struct volume_group *vg); 9886d7f5d3SJohn Marino 9986d7f5d3SJohn Marino int lv_is_active(struct logical_volume *lv); 10086d7f5d3SJohn Marino 10186d7f5d3SJohn Marino int monitor_dev_for_events(struct cmd_context *cmd, 10286d7f5d3SJohn Marino struct logical_volume *lv, int do_reg); 10386d7f5d3SJohn Marino 10486d7f5d3SJohn Marino /* 10586d7f5d3SJohn Marino * Returns 1 if PV has a dependency tree that uses anything in VG. 10686d7f5d3SJohn Marino */ 10786d7f5d3SJohn Marino int pv_uses_vg(struct physical_volume *pv, 10886d7f5d3SJohn Marino struct volume_group *vg); 10986d7f5d3SJohn Marino 11086d7f5d3SJohn Marino /* 11186d7f5d3SJohn Marino * Returns 1 if mapped device is not suspended. 11286d7f5d3SJohn Marino */ 11386d7f5d3SJohn Marino int device_is_usable(dev_t dev); 11486d7f5d3SJohn Marino 11586d7f5d3SJohn Marino #endif 116