HAMMER - Implement volume-list command
[dragonfly.git] / sbin / hammer / hammer.h
CommitLineData
61aeeb33
MD
1/*
2 * Copyright (c) 2007 The DragonFly Project. All rights reserved.
3 *
4 * This code is derived from software contributed to The DragonFly Project
5 * by Matthew Dillon <dillon@backplane.com>
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in
15 * the documentation and/or other materials provided with the
16 * distribution.
17 * 3. Neither the name of The DragonFly Project nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific, prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
31 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
de1c0b31 34 * $DragonFly: src/sbin/hammer/hammer.h,v 1.27 2008/11/13 02:04:27 dillon Exp $
61aeeb33
MD
35 */
36
37#include <sys/types.h>
38#include <sys/diskslice.h>
39#include <sys/diskmbr.h>
40#include <sys/stat.h>
41#include <sys/time.h>
e8969ef0 42#include <sys/mount.h>
34ebae70 43#include <sys/wait.h>
61aeeb33
MD
44
45#include <stdio.h>
46#include <stdlib.h>
47#include <stdarg.h>
48#include <stddef.h>
49#include <unistd.h>
50#include <string.h>
51#include <errno.h>
52#include <fcntl.h>
53#include <assert.h>
54#include <err.h>
55#include <ctype.h>
243ca327 56#include <signal.h>
da804f11 57#include <dirent.h>
34ebae70 58#include <uuid.h>
61aeeb33
MD
59
60#include "hammer_util.h"
13ce745d 61#include <vfs/hammer/hammer_ioctl.h>
61aeeb33 62
d38ab092 63extern int RecurseOpt;
563b4845 64extern int VerboseOpt;
e95314de 65extern int QuietOpt;
243ca327
MD
66extern int TwoWayPipeOpt;
67extern int TimeoutOpt;
48eadef9 68extern int DelayOpt;
6c45ca3e 69extern char *SshPort;
3a998207 70extern int CompressOpt;
07485271 71extern int ForceYesOpt;
445faa69
MD
72extern int RunningIoctl;
73extern int DidInterrupt;
e7f926a5 74extern int ForceOpt;
0bd7a37c 75extern int BulkOpt;
48eadef9 76extern u_int64_t BandwidthOpt;
3d7b2393 77extern u_int64_t SplitupOpt;
da804f11 78extern const char *LinkPath;
d7ae405c 79extern const char *CyclePath;
d38ab092 80
e7f926a5
MD
81void hammer_cmd_show(hammer_tid_t node_offset, u_int32_t lo,
82 int64_t obj_id, int depth,
47197d71 83 hammer_base_elm_t left_bound, hammer_base_elm_t right_bound);
6aec797f 84void hammer_cmd_show_undo(void);
b9107f58 85void hammer_cmd_recover(const char *target_dir);
6ed4c886 86void hammer_cmd_checkmap(void);
13ce745d 87void hammer_cmd_prune(char **av, int ac);
b5aaba7f 88void hammer_cmd_softprune(char **av, int ac, int everything_opt);
68e079b8
MD
89void hammer_cmd_bstats(char **av, int ac);
90void hammer_cmd_iostats(char **av, int ac);
367431cf 91void hammer_cmd_synctid(char **av, int ac);
48eadef9 92void hammer_cmd_mirror_read(char **av, int ac, int streaming);
a7fbbf91 93void hammer_cmd_mirror_write(char **av, int ac);
48eadef9 94void hammer_cmd_mirror_copy(char **av, int ac, int streaming);
243ca327 95void hammer_cmd_mirror_dump(void);
13ce745d 96void hammer_cmd_history(const char *offset_str, char **av, int ac);
eb3f8f1f 97void hammer_cmd_blockmap(void);
ba7b52c9 98void hammer_cmd_reblock(char **av, int ac, int flags);
797a0b63 99void hammer_cmd_rebalance(char **av, int ac);
34ebae70 100void hammer_cmd_pseudofs_status(char **av, int ac);
d4e5b69b
MD
101void hammer_cmd_pseudofs_create(char **av, int ac, int is_slave);
102void hammer_cmd_pseudofs_update(char **av, int ac);
243ca327 103void hammer_cmd_pseudofs_destroy(char **av, int ac);
9c67b4d2
MD
104void hammer_cmd_pseudofs_upgrade(char **av, int ac);
105void hammer_cmd_pseudofs_downgrade(char **av, int ac);
a7fbbf91 106void hammer_cmd_status(char **av, int ac);
6b669ab4 107void hammer_cmd_snapshot(char **av, int ac);
83f2a3aa
MD
108void hammer_cmd_snap(char **av, int ac, int tostdout, int fsbase);
109void hammer_cmd_snapls(char **av, int ac);
110void hammer_cmd_snaprm(char **av, int ac);
6a6e350f 111void hammer_cmd_cleanup(char **av, int ac);
83f2a3aa
MD
112void hammer_cmd_config(char **av, int ac);
113void hammer_cmd_viconfig(char **av, int ac);
eac446c5 114void hammer_cmd_info(void);
de1c0b31
MD
115void hammer_cmd_get_version(char **av, int ac);
116void hammer_cmd_set_version(char **av, int ac);
d121f61c 117void hammer_cmd_volume_add(char **av, int ac);
865c9609 118void hammer_cmd_volume_del(char **av, int ac);
e914c91d 119void hammer_cmd_volume_list(char **av, int ac);
bb29b5d8
MD
120void hammer_cmd_dedup_simulate(char **av, int ac);
121void hammer_cmd_dedup(char **av, int ac);
d38ab092 122
243ca327
MD
123void hammer_get_cycle(hammer_base_elm_t base, hammer_tid_t *tidp);
124void hammer_set_cycle(hammer_base_elm_t base, hammer_tid_t tid);
d7ae405c 125void hammer_reset_cycle(void);
5a19cfc8 126
d4e5b69b 127int getpfs(struct hammer_ioc_pseudofs_rw *pfs, const char *path);
48eadef9 128void relpfs(int fd, struct hammer_ioc_pseudofs_rw *pfs);