Commit | Line | Data |
---|---|---|
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 | 63 | extern int RecurseOpt; |
563b4845 | 64 | extern int VerboseOpt; |
e95314de | 65 | extern int QuietOpt; |
243ca327 MD |
66 | extern int TwoWayPipeOpt; |
67 | extern int TimeoutOpt; | |
48eadef9 | 68 | extern int DelayOpt; |
6c45ca3e | 69 | extern char *SshPort; |
07485271 | 70 | extern int ForceYesOpt; |
445faa69 MD |
71 | extern int RunningIoctl; |
72 | extern int DidInterrupt; | |
e7f926a5 | 73 | extern int ForceOpt; |
0bd7a37c | 74 | extern int BulkOpt; |
48eadef9 | 75 | extern u_int64_t BandwidthOpt; |
da804f11 | 76 | extern const char *LinkPath; |
d7ae405c | 77 | extern const char *CyclePath; |
d38ab092 | 78 | |
e7f926a5 MD |
79 | void hammer_cmd_show(hammer_tid_t node_offset, u_int32_t lo, |
80 | int64_t obj_id, int depth, | |
47197d71 | 81 | hammer_base_elm_t left_bound, hammer_base_elm_t right_bound); |
6aec797f | 82 | void hammer_cmd_show_undo(void); |
13ce745d | 83 | void hammer_cmd_prune(char **av, int ac); |
b5aaba7f | 84 | void hammer_cmd_softprune(char **av, int ac, int everything_opt); |
68e079b8 MD |
85 | void hammer_cmd_bstats(char **av, int ac); |
86 | void hammer_cmd_iostats(char **av, int ac); | |
367431cf | 87 | void hammer_cmd_synctid(char **av, int ac); |
48eadef9 | 88 | void hammer_cmd_mirror_read(char **av, int ac, int streaming); |
a7fbbf91 | 89 | void hammer_cmd_mirror_write(char **av, int ac); |
48eadef9 | 90 | void hammer_cmd_mirror_copy(char **av, int ac, int streaming); |
243ca327 | 91 | void hammer_cmd_mirror_dump(void); |
13ce745d | 92 | void hammer_cmd_history(const char *offset_str, char **av, int ac); |
eb3f8f1f | 93 | void hammer_cmd_blockmap(void); |
ba7b52c9 | 94 | void hammer_cmd_reblock(char **av, int ac, int flags); |
797a0b63 | 95 | void hammer_cmd_rebalance(char **av, int ac); |
34ebae70 | 96 | void hammer_cmd_pseudofs_status(char **av, int ac); |
d4e5b69b MD |
97 | void hammer_cmd_pseudofs_create(char **av, int ac, int is_slave); |
98 | void hammer_cmd_pseudofs_update(char **av, int ac); | |
243ca327 | 99 | void hammer_cmd_pseudofs_destroy(char **av, int ac); |
9c67b4d2 MD |
100 | void hammer_cmd_pseudofs_upgrade(char **av, int ac); |
101 | void hammer_cmd_pseudofs_downgrade(char **av, int ac); | |
a7fbbf91 | 102 | void hammer_cmd_status(char **av, int ac); |
6b669ab4 | 103 | void hammer_cmd_snapshot(char **av, int ac); |
83f2a3aa MD |
104 | void hammer_cmd_snap(char **av, int ac, int tostdout, int fsbase); |
105 | void hammer_cmd_snapls(char **av, int ac); | |
106 | void hammer_cmd_snaprm(char **av, int ac); | |
6a6e350f | 107 | void hammer_cmd_cleanup(char **av, int ac); |
83f2a3aa MD |
108 | void hammer_cmd_config(char **av, int ac); |
109 | void hammer_cmd_viconfig(char **av, int ac); | |
eac446c5 | 110 | void hammer_cmd_info(void); |
de1c0b31 MD |
111 | void hammer_cmd_get_version(char **av, int ac); |
112 | void hammer_cmd_set_version(char **av, int ac); | |
d121f61c | 113 | void hammer_cmd_volume_add(char **av, int ac); |
865c9609 | 114 | void hammer_cmd_volume_del(char **av, int ac); |
d38ab092 | 115 | |
243ca327 MD |
116 | void hammer_get_cycle(hammer_base_elm_t base, hammer_tid_t *tidp); |
117 | void hammer_set_cycle(hammer_base_elm_t base, hammer_tid_t tid); | |
d7ae405c | 118 | void hammer_reset_cycle(void); |
5a19cfc8 | 119 | |
d4e5b69b | 120 | int getpfs(struct hammer_ioc_pseudofs_rw *pfs, const char *path); |
48eadef9 | 121 | void relpfs(int fd, struct hammer_ioc_pseudofs_rw *pfs); |
d4e5b69b | 122 |