| /* |
| * Copyright (C) 2003-2004 Sistina Software, Inc. All rights reserved. |
| * Copyright (C) 2004-2015 Red Hat, Inc. All rights reserved. |
| * |
| * 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 Lesser General Public License v.2.1. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with this program; if not, write to the Free Software Foundation, |
| * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| */ |
| |
| #ifndef _LVM_TOOL_POLLDAEMON_H |
| #define _LVM_TOOL_POLLDAEMON_H |
| |
| #include "metadata-exported.h" |
| |
| typedef enum { |
| PROGRESS_CHECK_FAILED = 0, |
| PROGRESS_UNFINISHED = 1, |
| PROGRESS_FINISHED_SEGMENT = 2, |
| PROGRESS_FINISHED_ALL = 3 |
| } progress_t; |
| |
| struct daemon_parms; |
| |
| struct poll_functions { |
| const char *(*get_copy_name_from_lv) (const struct logical_volume *lv); |
| progress_t (*poll_progress)(struct cmd_context *cmd, |
| struct logical_volume *lv, |
| const char *name, |
| struct daemon_parms *parms); |
| int (*update_metadata) (struct cmd_context *cmd, |
| struct volume_group *vg, |
| struct logical_volume *lv, |
| struct dm_list *lvs_changed, unsigned flags); |
| int (*finish_copy) (struct cmd_context *cmd, |
| struct volume_group *vg, |
| struct logical_volume *lv, |
| struct dm_list *lvs_changed); |
| }; |
| |
| struct poll_operation_id { |
| const char *vg_name; |
| const char *lv_name; |
| const char *display_name; |
| const char *uuid; |
| }; |
| |
| struct daemon_parms { |
| unsigned interval; |
| unsigned wait_before_testing; |
| unsigned aborting; |
| unsigned background; |
| unsigned outstanding_count; |
| unsigned progress_display; |
| const char *progress_title; |
| uint64_t lv_type; |
| struct poll_functions *poll_fns; |
| }; |
| |
| int poll_daemon(struct cmd_context *cmd, unsigned background, |
| uint64_t lv_type, struct poll_functions *poll_fns, |
| const char *progress_title, struct poll_operation_id *id); |
| |
| progress_t poll_mirror_progress(struct cmd_context *cmd, |
| struct logical_volume *lv, const char *name, |
| struct daemon_parms *parms); |
| |
| int wait_for_single_lv(struct cmd_context *cmd, struct poll_operation_id *id, |
| struct daemon_parms *parms); |
| |
| #endif |