Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
[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;
07485271 69extern int ForceYesOpt;
445faa69
MD
70extern int RunningIoctl;
71extern int DidInterrupt;
48eadef9 72extern u_int64_t BandwidthOpt;
da804f11 73extern const char *LinkPath;
d7ae405c 74extern const char *CyclePath;
d38ab092 75
47197d71
MD
76void hammer_cmd_show(hammer_tid_t node_offset, int depth,
77 hammer_base_elm_t left_bound, hammer_base_elm_t right_bound);
13ce745d 78void hammer_cmd_prune(char **av, int ac);
b5aaba7f 79void hammer_cmd_softprune(char **av, int ac, int everything_opt);
68e079b8
MD
80void hammer_cmd_bstats(char **av, int ac);
81void hammer_cmd_iostats(char **av, int ac);
367431cf 82void hammer_cmd_synctid(char **av, int ac);
48eadef9 83void hammer_cmd_mirror_read(char **av, int ac, int streaming);
a7fbbf91 84void hammer_cmd_mirror_write(char **av, int ac);
48eadef9 85void hammer_cmd_mirror_copy(char **av, int ac, int streaming);
243ca327 86void hammer_cmd_mirror_dump(void);
13ce745d 87void hammer_cmd_history(const char *offset_str, char **av, int ac);
eb3f8f1f 88void hammer_cmd_blockmap(void);
ba7b52c9 89void hammer_cmd_reblock(char **av, int ac, int flags);
797a0b63 90void hammer_cmd_rebalance(char **av, int ac);
34ebae70 91void hammer_cmd_pseudofs_status(char **av, int ac);
d4e5b69b
MD
92void hammer_cmd_pseudofs_create(char **av, int ac, int is_slave);
93void hammer_cmd_pseudofs_update(char **av, int ac);
243ca327 94void hammer_cmd_pseudofs_destroy(char **av, int ac);
9c67b4d2
MD
95void hammer_cmd_pseudofs_upgrade(char **av, int ac);
96void hammer_cmd_pseudofs_downgrade(char **av, int ac);
a7fbbf91 97void hammer_cmd_status(char **av, int ac);
6b669ab4 98void hammer_cmd_snapshot(char **av, int ac);
6a6e350f 99void hammer_cmd_cleanup(char **av, int ac);
b66b9421 100void hammer_cmd_info(int ac);
de1c0b31
MD
101void hammer_cmd_get_version(char **av, int ac);
102void hammer_cmd_set_version(char **av, int ac);
e27700cf 103void hammer_cmd_expand(char **av, int ac);
d38ab092 104
243ca327
MD
105void hammer_get_cycle(hammer_base_elm_t base, hammer_tid_t *tidp);
106void hammer_set_cycle(hammer_base_elm_t base, hammer_tid_t tid);
d7ae405c 107void hammer_reset_cycle(void);
5a19cfc8 108
d4e5b69b 109int getpfs(struct hammer_ioc_pseudofs_rw *pfs, const char *path);
48eadef9 110void relpfs(int fd, struct hammer_ioc_pseudofs_rw *pfs);
d4e5b69b 111