12d60b848STomohiro Kusumi /* 22d60b848STomohiro Kusumi * Copyright (c) 2022 Tomohiro Kusumi <tkusumi@netbsd.org> 32d60b848STomohiro Kusumi * Copyright (c) 2011-2022 The DragonFly Project. All rights reserved. 42d60b848STomohiro Kusumi * 52d60b848STomohiro Kusumi * This code is derived from software contributed to The DragonFly Project 62d60b848STomohiro Kusumi * by Matthew Dillon <dillon@dragonflybsd.org> 72d60b848STomohiro Kusumi * 82d60b848STomohiro Kusumi * Redistribution and use in source and binary forms, with or without 92d60b848STomohiro Kusumi * modification, are permitted provided that the following conditions 102d60b848STomohiro Kusumi * are met: 112d60b848STomohiro Kusumi * 122d60b848STomohiro Kusumi * 1. Redistributions of source code must retain the above copyright 132d60b848STomohiro Kusumi * notice, this list of conditions and the following disclaimer. 142d60b848STomohiro Kusumi * 2. Redistributions in binary form must reproduce the above copyright 152d60b848STomohiro Kusumi * notice, this list of conditions and the following disclaimer in 162d60b848STomohiro Kusumi * the documentation and/or other materials provided with the 172d60b848STomohiro Kusumi * distribution. 182d60b848STomohiro Kusumi * 3. Neither the name of The DragonFly Project nor the names of its 192d60b848STomohiro Kusumi * contributors may be used to endorse or promote products derived 202d60b848STomohiro Kusumi * from this software without specific, prior written permission. 212d60b848STomohiro Kusumi * 222d60b848STomohiro Kusumi * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 232d60b848STomohiro Kusumi * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 242d60b848STomohiro Kusumi * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 252d60b848STomohiro Kusumi * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 262d60b848STomohiro Kusumi * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 272d60b848STomohiro Kusumi * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 282d60b848STomohiro Kusumi * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 292d60b848STomohiro Kusumi * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 302d60b848STomohiro Kusumi * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 312d60b848STomohiro Kusumi * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 322d60b848STomohiro Kusumi * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 332d60b848STomohiro Kusumi * SUCH DAMAGE. 342d60b848STomohiro Kusumi */ 352d60b848STomohiro Kusumi 362d60b848STomohiro Kusumi #ifndef NEWFS_HAMMER2_H_ 372d60b848STomohiro Kusumi #define NEWFS_HAMMER2_H_ 382d60b848STomohiro Kusumi 392d60b848STomohiro Kusumi #include <vfs/hammer2/hammer2_disk.h> 402d60b848STomohiro Kusumi 412d60b848STomohiro Kusumi #include <uuid.h> 422d60b848STomohiro Kusumi 432d60b848STomohiro Kusumi #include "hammer2_subs.h" 442d60b848STomohiro Kusumi 452d60b848STomohiro Kusumi #define HAMMER2_LABEL_NONE 0 462d60b848STomohiro Kusumi #define HAMMER2_LABEL_BOOT 1 472d60b848STomohiro Kusumi #define HAMMER2_LABEL_ROOT 2 482d60b848STomohiro Kusumi #define HAMMER2_LABEL_DATA 3 492d60b848STomohiro Kusumi 502d60b848STomohiro Kusumi #define MAXLABELS HAMMER2_SET_COUNT 512d60b848STomohiro Kusumi 522d60b848STomohiro Kusumi typedef struct { 532d60b848STomohiro Kusumi int Hammer2Version; 542d60b848STomohiro Kusumi uuid_t Hammer2_FSType; /* filesystem type id for HAMMER2 */ 552d60b848STomohiro Kusumi uuid_t Hammer2_VolFSID; /* unique filesystem id in volu header */ 562d60b848STomohiro Kusumi uuid_t Hammer2_SupCLID; /* PFS cluster id in super-root inode */ 572d60b848STomohiro Kusumi uuid_t Hammer2_SupFSID; /* PFS unique id in super-root inode */ 582d60b848STomohiro Kusumi uuid_t Hammer2_PfsCLID[MAXLABELS]; 592d60b848STomohiro Kusumi uuid_t Hammer2_PfsFSID[MAXLABELS]; 602d60b848STomohiro Kusumi hammer2_off_t BootAreaSize; 612d60b848STomohiro Kusumi hammer2_off_t AuxAreaSize; 62*2dc244c9STomohiro Kusumi hammer2_off_t FileSystemSize[HAMMER2_MAX_VOLUMES]; 63*2dc244c9STomohiro Kusumi int NFileSystemSizes; 642d60b848STomohiro Kusumi char *Label[MAXLABELS]; 652d60b848STomohiro Kusumi int NLabels; 662d60b848STomohiro Kusumi int CompType; /* default LZ4 */ 672d60b848STomohiro Kusumi int CheckType; /* default XXHASH64 */ 682d60b848STomohiro Kusumi int DefaultLabelType; 692d60b848STomohiro Kusumi int DebugOpt; 702d60b848STomohiro Kusumi } hammer2_mkfs_options_t; 712d60b848STomohiro Kusumi 722d60b848STomohiro Kusumi void hammer2_mkfs_init(hammer2_mkfs_options_t *opt); 732d60b848STomohiro Kusumi void hammer2_mkfs_cleanup(hammer2_mkfs_options_t *opt); 742d60b848STomohiro Kusumi 752d60b848STomohiro Kusumi int64_t getsize(const char *str, int64_t minval, int64_t maxval, int pw); 762d60b848STomohiro Kusumi 772d60b848STomohiro Kusumi void hammer2_mkfs(int ac, char **av, hammer2_mkfs_options_t *opt); 782d60b848STomohiro Kusumi 792d60b848STomohiro Kusumi #endif /* !NEWFS_HAMMER2_H_ */ 80