| Commit | Line | Data |
|---|---|---|
| 61aeeb33 MD |
1 | /* |
| 2 | * Copyright (c) 2007 The DragonFly Project. All rights reserved. | |
| 84e57c2c | 3 | * |
| 61aeeb33 MD |
4 | * This code is derived from software contributed to The DragonFly Project |
| 5 | * by Matthew Dillon <dillon@backplane.com> | |
| 84e57c2c | 6 | * |
| 61aeeb33 MD |
7 | * Redistribution and use in source and binary forms, with or without |
| 8 | * modification, are permitted provided that the following conditions | |
| 9 | * are met: | |
| 84e57c2c | 10 | * |
| 61aeeb33 MD |
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. | |
| 84e57c2c | 20 | * |
| 61aeeb33 MD |
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. | |
| 84e57c2c | 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 | |
| 4f09feab AHJ |
63 | #include <libhammer.h> |
| 64 | ||
| d38ab092 | 65 | extern int RecurseOpt; |
| 563b4845 | 66 | extern int VerboseOpt; |
| e95314de | 67 | extern int QuietOpt; |
| 243ca327 MD |
68 | extern int TwoWayPipeOpt; |
| 69 | extern int TimeoutOpt; | |
| 48eadef9 | 70 | extern int DelayOpt; |
| 6c45ca3e | 71 | extern char *SshPort; |
| 3a998207 | 72 | extern int CompressOpt; |
| 07485271 | 73 | extern int ForceYesOpt; |
| 445faa69 MD |
74 | extern int RunningIoctl; |
| 75 | extern int DidInterrupt; | |
| e7f926a5 | 76 | extern int ForceOpt; |
| 0bd7a37c | 77 | extern int BulkOpt; |
| 48eadef9 | 78 | extern u_int64_t BandwidthOpt; |
| 3d7b2393 | 79 | extern u_int64_t SplitupOpt; |
| fbe1c665 | 80 | extern u_int64_t MemoryLimit; |
| da804f11 | 81 | extern const char *LinkPath; |
| d7ae405c | 82 | extern const char *CyclePath; |
| d38ab092 | 83 | |
| e7f926a5 MD |
84 | void hammer_cmd_show(hammer_tid_t node_offset, u_int32_t lo, |
| 85 | int64_t obj_id, int depth, | |
| 47197d71 | 86 | hammer_base_elm_t left_bound, hammer_base_elm_t right_bound); |
| 6aec797f | 87 | void hammer_cmd_show_undo(void); |
| b9107f58 | 88 | void hammer_cmd_recover(const char *target_dir); |
| 6ed4c886 | 89 | void hammer_cmd_checkmap(void); |
| 13ce745d | 90 | void hammer_cmd_prune(char **av, int ac); |
| b5aaba7f | 91 | void hammer_cmd_softprune(char **av, int ac, int everything_opt); |
| 68e079b8 MD |
92 | void hammer_cmd_bstats(char **av, int ac); |
| 93 | void hammer_cmd_iostats(char **av, int ac); | |
| 367431cf | 94 | void hammer_cmd_synctid(char **av, int ac); |
| 48eadef9 | 95 | void hammer_cmd_mirror_read(char **av, int ac, int streaming); |
| a7fbbf91 | 96 | void hammer_cmd_mirror_write(char **av, int ac); |
| 48eadef9 | 97 | void hammer_cmd_mirror_copy(char **av, int ac, int streaming); |
| 243ca327 | 98 | void hammer_cmd_mirror_dump(void); |
| 13ce745d | 99 | void hammer_cmd_history(const char *offset_str, char **av, int ac); |
| eb3f8f1f | 100 | void hammer_cmd_blockmap(void); |
| ba7b52c9 | 101 | void hammer_cmd_reblock(char **av, int ac, int flags); |
| 797a0b63 | 102 | void hammer_cmd_rebalance(char **av, int ac); |
| 34ebae70 | 103 | void hammer_cmd_pseudofs_status(char **av, int ac); |
| d4e5b69b MD |
104 | void hammer_cmd_pseudofs_create(char **av, int ac, int is_slave); |
| 105 | void hammer_cmd_pseudofs_update(char **av, int ac); | |
| 243ca327 | 106 | void hammer_cmd_pseudofs_destroy(char **av, int ac); |
| 9c67b4d2 MD |
107 | void hammer_cmd_pseudofs_upgrade(char **av, int ac); |
| 108 | void hammer_cmd_pseudofs_downgrade(char **av, int ac); | |
| a7fbbf91 | 109 | void hammer_cmd_status(char **av, int ac); |
| 6b669ab4 | 110 | void hammer_cmd_snapshot(char **av, int ac); |
| 83f2a3aa MD |
111 | void hammer_cmd_snap(char **av, int ac, int tostdout, int fsbase); |
| 112 | void hammer_cmd_snapls(char **av, int ac); | |
| 113 | void hammer_cmd_snaprm(char **av, int ac); | |
| 6a6e350f | 114 | void hammer_cmd_cleanup(char **av, int ac); |
| 83f2a3aa MD |
115 | void hammer_cmd_config(char **av, int ac); |
| 116 | void hammer_cmd_viconfig(char **av, int ac); | |
| eac446c5 | 117 | void hammer_cmd_info(void); |
| de1c0b31 MD |
118 | void hammer_cmd_get_version(char **av, int ac); |
| 119 | void hammer_cmd_set_version(char **av, int ac); | |
| d121f61c | 120 | void hammer_cmd_volume_add(char **av, int ac); |
| 865c9609 | 121 | void hammer_cmd_volume_del(char **av, int ac); |
| e914c91d | 122 | void hammer_cmd_volume_list(char **av, int ac); |
| bb29b5d8 MD |
123 | void hammer_cmd_dedup_simulate(char **av, int ac); |
| 124 | void hammer_cmd_dedup(char **av, int ac); | |
| d38ab092 | 125 | |
| 243ca327 MD |
126 | void hammer_get_cycle(hammer_base_elm_t base, hammer_tid_t *tidp); |
| 127 | void hammer_set_cycle(hammer_base_elm_t base, hammer_tid_t tid); | |
| d7ae405c | 128 | void hammer_reset_cycle(void); |
| 5a19cfc8 | 129 | |
| d4e5b69b | 130 | int getpfs(struct hammer_ioc_pseudofs_rw *pfs, const char *path); |
| 48eadef9 | 131 | void relpfs(int fd, struct hammer_ioc_pseudofs_rw *pfs); |