[BACK]Return to installboot.h CVS log [TXT][DIR] Up to [local] / src / usr.sbin / installboot

File: [local] / src / usr.sbin / installboot / installboot.h (download)

Revision 1.16, Tue Nov 8 12:08:53 2022 UTC (19 months ago) by kn
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, HEAD
Changes since 1.15: +2 -1 lines

Make "prepare filesystem" softraid aware, fix arm64 softraid install

On EFI platforms, 'installboot -p' on a softraid volume will only prepare
the filesysem inside the volume and leave physical softraid chunks untouched
which leaves you with unbootable chunks.

The current workaround is to prepare chunks manually (see regress).

Fix it in the same spirit the actual "install" already works in softraid.c.

This is what mlarkin has already been tested in a combined diff with the
MD -> MI softraid merge bits from the previous commit.

Works fine on amd64, arm64 and sparc64 upgrades and installations.

OK jsing

/*	$OpenBSD: installboot.h,v 1.16 2022/11/08 12:08:53 kn Exp $	*/
/*
 * Copyright (c) 2012, 2013 Joel Sing <jsing@openbsd.org>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#include <dev/biovar.h>

#include <stdlib.h>

extern int nowrite;
extern int stages;
extern int verbose;

extern char *root;
extern char *stage1;
extern char *stage2;

#ifdef BOOTSTRAP
void	bootstrap(int, char *, char *);
#endif

int	filecopy(const char *, const char *);
char	*fileprefix(const char *, const char *);
int	fileprintf(const char *, const char *, ...)
	    __attribute__((format(printf, 2, 3)));
u_int32_t crc32(const u_char *, const u_int32_t);

void	md_init(void);
void	md_loadboot(void);
void	md_prepareboot(int, char *);
void	md_installboot(int, char *);

#ifdef SOFTRAID
int	sr_open_chunk(int, int, int, struct bioc_disk *, char **, char *);
void	sr_prepareboot(int, char *);
void	sr_installboot(int, char *);
void	sr_install_bootblk(int, int, int);
void	sr_install_bootldr(int, char *);
void	sr_status(struct bio_status *);
#endif