Module Name: src
Committed By: christos
Date: Wed Apr 3 22:10:52 UTC 2019
Modified Files:
src/sys/arch/alpha/alpha: disksubr.c
src/sys/arch/amiga/amiga: disksubr.c
src/sys/arch/arc/arc: disksubr.c
src/sys/arch/arm/arm: disksubr.c
src/sys/arch/atari/atari: disksubr.c
src/sys/arch/cobalt/cobalt: disksubr.c
src/sys/arch/evbmips/evbmips: disksubr.c
src/sys/arch/evbmips/sbmips: disksubr.c
src/sys/arch/evbppc/evbppc: disksubr.c
src/sys/arch/ews4800mips/include: disklabel.h
src/sys/arch/hp300/hp300: disksubr.c
src/sys/arch/hpc/hpc: disksubr.c
src/sys/arch/hppa/hppa: disksubr.c
src/sys/arch/luna68k/luna68k: disksubr.c
src/sys/arch/mac68k/include: disklabel.h
src/sys/arch/mac68k/mac68k: disksubr.c
src/sys/arch/macppc/include: disklabel.h
src/sys/arch/mipsco/mipsco: disksubr.c
src/sys/arch/mvme68k/mvme68k: disksubr.c
src/sys/arch/news68k/news68k: disksubr.c
src/sys/arch/newsmips/newsmips: disksubr.c
src/sys/arch/next68k/next68k: disksubr.c
src/sys/arch/ofppc/ofppc: disksubr.c
src/sys/arch/playstation2/playstation2: disksubr.c
src/sys/arch/pmax/pmax: disksubr.c
src/sys/arch/sbmips/sbmips: disksubr.c
src/sys/arch/sgimips/sgimips: disksubr.c
src/sys/arch/sh3/sh3: disksubr.c
src/sys/arch/vax/vax: disksubr.c
src/sys/arch/x68k/x68k: disksubr.c
src/sys/dev/sun: disksubr.c
src/sys/kern: subr_disk.c subr_disk_mbr.c
Log Message:
centralize setdisklabel(9)
To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/alpha/alpha/disksubr.c
cvs rdiff -u -r1.69 -r1.70 src/sys/arch/amiga/amiga/disksubr.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/arc/arc/disksubr.c
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/arm/disksubr.c
cvs rdiff -u -r1.43 -r1.44 src/sys/arch/atari/atari/disksubr.c
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/cobalt/cobalt/disksubr.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/evbmips/evbmips/disksubr.c
cvs rdiff -u -r1.1.1.1 -r1.2 src/sys/arch/evbmips/sbmips/disksubr.c
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/evbppc/evbppc/disksubr.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/ews4800mips/include/disklabel.h
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/hp300/hp300/disksubr.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/hpc/hpc/disksubr.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/hppa/hppa/disksubr.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/luna68k/luna68k/disksubr.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/mac68k/include/disklabel.h
cvs rdiff -u -r1.57 -r1.58 src/sys/arch/mac68k/mac68k/disksubr.c
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/macppc/include/disklabel.h
cvs rdiff -u -r1.27 -r1.28 src/sys/arch/mipsco/mipsco/disksubr.c
cvs rdiff -u -r1.35 -r1.36 src/sys/arch/mvme68k/mvme68k/disksubr.c
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/news68k/news68k/disksubr.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/newsmips/newsmips/disksubr.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/next68k/next68k/disksubr.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/ofppc/ofppc/disksubr.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/playstation2/playstation2/disksubr.c
cvs rdiff -u -r1.54 -r1.55 src/sys/arch/pmax/pmax/disksubr.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/sbmips/sbmips/disksubr.c
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/sgimips/sgimips/disksubr.c
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/sh3/sh3/disksubr.c
cvs rdiff -u -r1.53 -r1.54 src/sys/arch/vax/vax/disksubr.c
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/x68k/x68k/disksubr.c
cvs rdiff -u -r1.15 -r1.16 src/sys/dev/sun/disksubr.c
cvs rdiff -u -r1.123 -r1.124 src/sys/kern/subr_disk.c
cvs rdiff -u -r1.49 -r1.50 src/sys/kern/subr_disk_mbr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/alpha/alpha/disksubr.c
diff -u src/sys/arch/alpha/alpha/disksubr.c:1.41 src/sys/arch/alpha/alpha/disksubr.c:1.42
--- src/sys/arch/alpha/alpha/disksubr.c:1.41 Sun Feb 5 21:14:11 2012
+++ src/sys/arch/alpha/alpha/disksubr.c Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.41 2012/02/06 02:14:11 matt Exp $ */
+/* $NetBSD: disksubr.c,v 1.42 2019/04/03 22:10:49 christos Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -29,7 +29,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.41 2012/02/06 02:14:11 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.42 2019/04/03 22:10:49 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -141,59 +141,6 @@ done:
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *clp)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
-#ifdef notdef
- /* XXX WHY WAS THIS HERE?! */
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-#endif
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
* This means write out the rigid disk blocks to represent the
* label. Hope the user was careful.
Index: src/sys/arch/amiga/amiga/disksubr.c
diff -u src/sys/arch/amiga/amiga/disksubr.c:1.69 src/sys/arch/amiga/amiga/disksubr.c:1.70
--- src/sys/arch/amiga/amiga/disksubr.c:1.69 Mon Sep 3 12:29:22 2018
+++ src/sys/arch/amiga/amiga/disksubr.c Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.69 2018/09/03 16:29:22 riastradh Exp $ */
+/* $NetBSD: disksubr.c,v 1.70 2019/04/03 22:10:49 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.69 2018/09/03 16:29:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.70 2019/04/03 22:10:49 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -499,45 +499,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *clp)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
* this means write out the Rigid disk blocks to represent the
* label. Hope the user was carefull.
Index: src/sys/arch/arc/arc/disksubr.c
diff -u src/sys/arch/arc/arc/disksubr.c:1.29 src/sys/arch/arc/arc/disksubr.c:1.30
--- src/sys/arch/arc/arc/disksubr.c:1.29 Thu May 16 15:06:44 2013
+++ src/sys/arch/arc/arc/disksubr.c Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.29 2013/05/16 19:06:44 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:49 christos Exp $ */
/* $OpenBSD: disksubr.c,v 1.14 1997/05/08 00:14:29 deraadt Exp $ */
/* NetBSD: disksubr.c,v 1.40 1999/05/06 15:45:51 christos Exp */
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.29 2013/05/16 19:06:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:49 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -356,61 +356,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return EINVAL;
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return 0;
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/arm/arm/disksubr.c
diff -u src/sys/arch/arm/arm/disksubr.c:1.25 src/sys/arch/arm/arm/disksubr.c:1.26
--- src/sys/arch/arm/arm/disksubr.c:1.25 Fri Apr 25 16:17:28 2014
+++ src/sys/arch/arm/arm/disksubr.c Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.25 2014/04/25 20:17:28 martin Exp $ */
+/* $NetBSD: disksubr.c,v 1.26 2019/04/03 22:10:49 christos Exp $ */
/*
* Copyright (c) 1998 Christopher G. Demetriou. All rights reserved.
@@ -97,7 +97,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.25 2014/04/25 20:17:28 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.26 2019/04/03 22:10:49 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -264,65 +264,6 @@ done:
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
-
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
-
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC
- || dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX add check if other acorn/dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
-
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
Index: src/sys/arch/atari/atari/disksubr.c
diff -u src/sys/arch/atari/atari/disksubr.c:1.43 src/sys/arch/atari/atari/disksubr.c:1.44
--- src/sys/arch/atari/atari/disksubr.c:1.43 Tue Apr 13 07:22:22 2010
+++ src/sys/arch/atari/atari/disksubr.c Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.43 2010/04/13 11:22:22 tsutsui Exp $ */
+/* $NetBSD: disksubr.c,v 1.44 2019/04/03 22:10:49 christos Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.43 2010/04/13 11:22:22 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.44 2019/04/03 22:10:49 christos Exp $");
#ifndef DISKLABEL_NBDA
#define DISKLABEL_NBDA /* required */
@@ -135,58 +135,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *clp)
-{
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return 0;
- }
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_npartitions > MAXPARTITIONS ||
- nlp->d_secsize == 0 || (nlp->d_secsize % DEV_BSIZE) != 0 ||
- nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
-
-#ifdef DISKLABEL_AHDI
- if (clp && clp->cd_bblock)
- ck_label(nlp, clp);
-#endif
- while (openmask) {
- struct partition *op, *np;
- int i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (i >= nlp->d_npartitions)
- return EBUSY;
- op = &olp->d_partitions[i];
- np = &nlp->d_partitions[i];
- if (np->p_offset != op->p_offset || np->p_size < op->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (np->p_fstype == FS_UNUSED && op->p_fstype != FS_UNUSED) {
- np->p_fstype = op->p_fstype;
- np->p_fsize = op->p_fsize;
- np->p_frag = op->p_frag;
- np->p_cpg = op->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/cobalt/cobalt/disksubr.c
diff -u src/sys/arch/cobalt/cobalt/disksubr.c:1.25 src/sys/arch/cobalt/cobalt/disksubr.c:1.26
--- src/sys/arch/cobalt/cobalt/disksubr.c:1.25 Thu May 16 15:06:44 2013
+++ src/sys/arch/cobalt/cobalt/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.25 2013/05/16 19:06:44 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.26 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.25 2013/05/16 19:06:44 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.26 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -258,61 +258,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return EINVAL;
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return 0;
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/evbmips/evbmips/disksubr.c
diff -u src/sys/arch/evbmips/evbmips/disksubr.c:1.17 src/sys/arch/evbmips/evbmips/disksubr.c:1.18
--- src/sys/arch/evbmips/evbmips/disksubr.c:1.17 Wed Jan 2 06:48:24 2008
+++ src/sys/arch/evbmips/evbmips/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.17 2008/01/02 11:48:24 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.18 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.17 2008/01/02 11:48:24 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.18 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -146,51 +146,6 @@ done:
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *clp)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
* this means write out the Rigid disk blocks to represent the
* label. Hope the user was carefull.
Index: src/sys/arch/evbmips/sbmips/disksubr.c
diff -u src/sys/arch/evbmips/sbmips/disksubr.c:1.1.1.1 src/sys/arch/evbmips/sbmips/disksubr.c:1.2
--- src/sys/arch/evbmips/sbmips/disksubr.c:1.1.1.1 Mon Jul 24 04:56:29 2017
+++ src/sys/arch/evbmips/sbmips/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.1.1.1 2017/07/24 08:56:29 mrg Exp $ */
+/* $NetBSD: disksubr.c,v 1.2 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.1.1.1 2017/07/24 08:56:29 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.2 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -261,60 +261,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/evbppc/evbppc/disksubr.c
diff -u src/sys/arch/evbppc/evbppc/disksubr.c:1.17 src/sys/arch/evbppc/evbppc/disksubr.c:1.18
--- src/sys/arch/evbppc/evbppc/disksubr.c:1.17 Fri Jan 18 09:04:16 2013
+++ src/sys/arch/evbppc/evbppc/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.17 2013/01/18 14:04:16 kiyohara Exp $ */
+/* $NetBSD: disksubr.c,v 1.18 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.17 2013/01/18 14:04:16 kiyohara Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.18 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -155,57 +155,6 @@ done:
return (msg);
}
-/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
/*
* Write disk label back to device after modification.
Index: src/sys/arch/ews4800mips/include/disklabel.h
diff -u src/sys/arch/ews4800mips/include/disklabel.h:1.4 src/sys/arch/ews4800mips/include/disklabel.h:1.5
--- src/sys/arch/ews4800mips/include/disklabel.h:1.4 Tue Aug 30 08:39:54 2011
+++ src/sys/arch/ews4800mips/include/disklabel.h Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disklabel.h,v 1.4 2011/08/30 12:39:54 bouyer Exp $ */
+/* $NetBSD: disklabel.h,v 1.5 2019/04/03 22:10:49 christos Exp $ */
/*-
* Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -74,6 +74,9 @@ void disklabel_to_vtoc(struct cpu_diskla
void vtoc_to_disklabel(struct cpu_disklabel *, struct disklabel *);
void disklabel_set_default(struct disklabel *);
bool disklabel_sanity(struct disklabel *);
+
+#define __HAVE_SETDISKLABEL
#endif
+
#endif /* _EWS4800MIPS_DISKLABEL_H_ */
Index: src/sys/arch/hp300/hp300/disksubr.c
diff -u src/sys/arch/hp300/hp300/disksubr.c:1.27 src/sys/arch/hp300/hp300/disksubr.c:1.28
--- src/sys/arch/hp300/hp300/disksubr.c:1.27 Wed Jan 2 06:48:25 2008
+++ src/sys/arch/hp300/hp300/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.27 2008/01/02 11:48:25 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.28 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.27 2008/01/02 11:48:25 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.28 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -108,45 +108,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/hpc/hpc/disksubr.c
diff -u src/sys/arch/hpc/hpc/disksubr.c:1.21 src/sys/arch/hpc/hpc/disksubr.c:1.22
--- src/sys/arch/hpc/hpc/disksubr.c:1.21 Mon May 13 11:40:31 2013
+++ src/sys/arch/hpc/hpc/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.21 2013/05/13 15:40:31 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.22 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.21 2013/05/13 15:40:31 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.22 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -311,61 +311,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/hppa/hppa/disksubr.c
diff -u src/sys/arch/hppa/hppa/disksubr.c:1.2 src/sys/arch/hppa/hppa/disksubr.c:1.3
--- src/sys/arch/hppa/hppa/disksubr.c:1.2 Sat Oct 18 04:33:25 2014
+++ src/sys/arch/hppa/hppa/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.2 2014/10/18 08:33:25 snj Exp $ */
+/* $NetBSD: disksubr.c,v 1.3 2019/04/03 22:10:50 christos Exp $ */
/* $OpenBSD: disksubr.c,v 1.6 2000/10/18 21:00:34 mickey Exp $ */
@@ -68,7 +68,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.2 2014/10/18 08:33:25 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.3 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -269,69 +269,6 @@ readliflabel(struct buf *bp, void (*stra
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /*
- * XXX Nice thought, but it doesn't work, if the intention was to
- * force a reread at the next *readdisklabel call. That does not
- * happen. There's still some use for it though as you can pseudo-
- * partition the disk.
- *
- * Special case to allow disklabel to be invalidated.
- */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs((long)openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset ||
- npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/luna68k/luna68k/disksubr.c
diff -u src/sys/arch/luna68k/luna68k/disksubr.c:1.31 src/sys/arch/luna68k/luna68k/disksubr.c:1.32
--- src/sys/arch/luna68k/luna68k/disksubr.c:1.31 Fri Jan 2 14:42:05 2015
+++ src/sys/arch/luna68k/luna68k/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.31 2015/01/02 19:42:05 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.32 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -103,7 +103,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.31 2015/01/02 19:42:05 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.32 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -237,50 +237,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *clp)
-{
- struct partition *opp, *npp;
- int i;
-
- /* sanity clause */
- if ((nlp->d_secpercyl == 0) || (nlp->d_secsize == 0) ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return (EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC ||
- nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset ||
- npp->p_size < opp->p_size)
- return (EBUSY);
- }
-
- /* We did not modify the new label, so the checksum is OK. */
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
* Current label is already in clp->cd_block[]
*/
Index: src/sys/arch/mac68k/include/disklabel.h
diff -u src/sys/arch/mac68k/include/disklabel.h:1.7 src/sys/arch/mac68k/include/disklabel.h:1.8
--- src/sys/arch/mac68k/include/disklabel.h:1.7 Tue Aug 30 08:39:56 2011
+++ src/sys/arch/mac68k/include/disklabel.h Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disklabel.h,v 1.7 2011/08/30 12:39:56 bouyer Exp $ */
+/* $NetBSD: disklabel.h,v 1.8 2019/04/03 22:10:49 christos Exp $ */
/*
* Copyright (c) 1994 Christopher G. Demetriou
@@ -174,4 +174,6 @@ struct blockzeroblock {
#define BZB_ROOTFS 0x8000
#define BZB_USRFS 0x4000
+#define __HAVE_SETDISKLABEL
+
#endif /* _MACHINE_DISKLABEL_H_ */
Index: src/sys/arch/mac68k/mac68k/disksubr.c
diff -u src/sys/arch/mac68k/mac68k/disksubr.c:1.57 src/sys/arch/mac68k/mac68k/disksubr.c:1.58
--- src/sys/arch/mac68k/mac68k/disksubr.c:1.57 Wed Jan 2 06:48:26 2008
+++ src/sys/arch/mac68k/mac68k/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.57 2008/01/02 11:48:26 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.58 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -65,7 +65,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.57 2008/01/02 11:48:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.58 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -465,55 +465,7 @@ int
setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
struct cpu_disklabel *osdep)
{
-#if 0
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /*
- * XXX We are missing any sort of check if other partition types,
- * e.g. Macintosh or (PC) BIOS, will be overwritten.
- */
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
-#endif
- return (0);
+ return 0;
}
/*
Index: src/sys/arch/macppc/include/disklabel.h
diff -u src/sys/arch/macppc/include/disklabel.h:1.15 src/sys/arch/macppc/include/disklabel.h:1.16
--- src/sys/arch/macppc/include/disklabel.h:1.15 Tue Aug 30 08:39:56 2011
+++ src/sys/arch/macppc/include/disklabel.h Wed Apr 3 18:10:49 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disklabel.h,v 1.15 2011/08/30 12:39:56 bouyer Exp $ */
+/* $NetBSD: disklabel.h,v 1.16 2019/04/03 22:10:49 christos Exp $ */
/*-
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -224,4 +224,6 @@ struct blockzeroblock {
#define BZB_USRFS 0x4000
#define BZB_USRFS_NEW 0x0004
+#define __HAVE_SETDISKLABEL
+
#endif /* _MACHINE_DISKLABEL_H_ */
Index: src/sys/arch/mipsco/mipsco/disksubr.c
diff -u src/sys/arch/mipsco/mipsco/disksubr.c:1.27 src/sys/arch/mipsco/mipsco/disksubr.c:1.28
--- src/sys/arch/mipsco/mipsco/disksubr.c:1.27 Mon Mar 16 19:11:12 2009
+++ src/sys/arch/mipsco/mipsco/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.27 2009/03/16 23:11:12 dsl Exp $ */
+/* $NetBSD: disksubr.c,v 1.28 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.27 2009/03/16 23:11:12 dsl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.28 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -137,45 +137,6 @@ readdisklabel(dev_t dev, void (*strat)(s
return "no disk label";
}
-/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(register struct disklabel *olp, register struct disklabel *nlp, u_long openmask, struct cpu_disklabel *clp)
-{
- register int i;
- register struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
/* encoding of disk minor numbers, should be elsewhere... */
#define dkunit(dev) (minor(dev) >> 3)
#define dkpart(dev) (minor(dev) & 07)
Index: src/sys/arch/mvme68k/mvme68k/disksubr.c
diff -u src/sys/arch/mvme68k/mvme68k/disksubr.c:1.35 src/sys/arch/mvme68k/mvme68k/disksubr.c:1.36
--- src/sys/arch/mvme68k/mvme68k/disksubr.c:1.35 Thu Oct 22 23:28:09 2009
+++ src/sys/arch/mvme68k/mvme68k/disksubr.c Wed Apr 3 18:10:50 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.35 2009/10/23 03:28:09 snj Exp $ */
+/* $NetBSD: disksubr.c,v 1.36 2019/04/03 22:10:50 christos Exp $ */
/*
* Copyright (c) 1995 Dale Rahn.
@@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.35 2009/10/23 03:28:09 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.36 2019/04/03 22:10:50 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -106,73 +106,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *clp)
-{
- int i;
- struct partition *opp, *npp;
-
-#ifdef DEBUG
- if (disksubr_debug > 0) {
- printlp(nlp, "setdisklabel: new disklabel");
- printlp(olp, "setdisklabel: old disklabel");
- printclp(clp, "setdisklabel:cpu disklabel");
- }
-#endif
-
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return EINVAL;
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return 0;
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
-
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
-#ifdef DEBUG
- if(disksubr_debug > 0) {
- printlp(olp, "setdisklabel: old->new disklabel");
- }
-#endif
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/news68k/news68k/disksubr.c
diff -u src/sys/arch/news68k/news68k/disksubr.c:1.31 src/sys/arch/news68k/news68k/disksubr.c:1.32
--- src/sys/arch/news68k/news68k/disksubr.c:1.31 Wed Jan 2 06:48:26 2008
+++ src/sys/arch/news68k/news68k/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.31 2008/01/02 11:48:26 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.32 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.31 2008/01/02 11:48:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.32 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -107,45 +107,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/newsmips/newsmips/disksubr.c
diff -u src/sys/arch/newsmips/newsmips/disksubr.c:1.28 src/sys/arch/newsmips/newsmips/disksubr.c:1.29
--- src/sys/arch/newsmips/newsmips/disksubr.c:1.28 Wed Jan 2 06:48:26 2008
+++ src/sys/arch/newsmips/newsmips/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.28 2008/01/02 11:48:26 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.29 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.28 2008/01/02 11:48:26 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.29 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -107,45 +107,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/next68k/next68k/disksubr.c
diff -u src/sys/arch/next68k/next68k/disksubr.c:1.29 src/sys/arch/next68k/next68k/disksubr.c:1.30
--- src/sys/arch/next68k/next68k/disksubr.c:1.29 Tue Sep 4 11:08:30 2018
+++ src/sys/arch/next68k/next68k/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.29 2018/09/04 15:08:30 riastradh Exp $ */
+/* $NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.29 2018/09/04 15:08:30 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -397,44 +397,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/ofppc/ofppc/disksubr.c
diff -u src/sys/arch/ofppc/ofppc/disksubr.c:1.28 src/sys/arch/ofppc/ofppc/disksubr.c:1.29
--- src/sys/arch/ofppc/ofppc/disksubr.c:1.28 Mon Sep 3 12:29:26 2018
+++ src/sys/arch/ofppc/ofppc/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.28 2018/09/03 16:29:26 riastradh Exp $ */
+/* $NetBSD: disksubr.c,v 1.29 2019/04/03 22:10:51 christos Exp $ */
/*-
* Copyright (c) 2010 Frank Wille.
@@ -63,7 +63,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.28 2018/09/03 16:29:26 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.29 2019/04/03 22:10:51 christos Exp $");
#include "opt_disksubr.h"
@@ -787,58 +787,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return EINVAL;
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return 0;
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC
- || dkcksum(nlp) != 0)
- return EINVAL;
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
-
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/playstation2/playstation2/disksubr.c
diff -u src/sys/arch/playstation2/playstation2/disksubr.c:1.19 src/sys/arch/playstation2/playstation2/disksubr.c:1.20
--- src/sys/arch/playstation2/playstation2/disksubr.c:1.19 Fri Jul 4 04:51:15 2014
+++ src/sys/arch/playstation2/playstation2/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.19 2014/07/04 08:51:15 martin Exp $ */
+/* $NetBSD: disksubr.c,v 1.20 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.19 2014/07/04 08:51:15 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.20 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -259,61 +259,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/pmax/pmax/disksubr.c
diff -u src/sys/arch/pmax/pmax/disksubr.c:1.54 src/sys/arch/pmax/pmax/disksubr.c:1.55
--- src/sys/arch/pmax/pmax/disksubr.c:1.54 Sun Feb 20 02:50:25 2011
+++ src/sys/arch/pmax/pmax/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.54 2011/02/20 07:50:25 matt Exp $ */
+/* $NetBSD: disksubr.c,v 1.55 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.54 2011/02/20 07:50:25 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.55 2019/04/03 22:10:51 christos Exp $");
#include "opt_compat_ultrix.h"
@@ -192,46 +192,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return EINVAL;
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return EBUSY;
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return EBUSY;
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return 0;
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/sbmips/sbmips/disksubr.c
diff -u src/sys/arch/sbmips/sbmips/disksubr.c:1.21 src/sys/arch/sbmips/sbmips/disksubr.c:1.22
--- src/sys/arch/sbmips/sbmips/disksubr.c:1.21 Thu May 16 15:06:45 2013
+++ src/sys/arch/sbmips/sbmips/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.21 2013/05/16 19:06:45 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.22 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.21 2013/05/16 19:06:45 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.22 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -261,60 +261,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/sgimips/sgimips/disksubr.c
diff -u src/sys/arch/sgimips/sgimips/disksubr.c:1.23 src/sys/arch/sgimips/sgimips/disksubr.c:1.24
--- src/sys/arch/sgimips/sgimips/disksubr.c:1.23 Wed Jan 2 06:48:28 2008
+++ src/sys/arch/sgimips/sgimips/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.23 2008/01/02 11:48:28 ad Exp $ */
+/* $NetBSD: disksubr.c,v 1.24 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 2001 Christopher Sekiya
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.23 2008/01/02 11:48:28 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.24 2019/04/03 22:10:51 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -128,41 +128,6 @@ readdisklabel(dev_t dev, void (*strat)(s
return disklabel_sgimips_to_bsd(slp, lp);
}
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, unsigned long openmask, struct cpu_disklabel *clp)
-{
- register int i;
- register struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
#define dkpart(dev) (minor(dev) & 07)
#define dkminor(unit, part) (((unit) << 3) | (part))
Index: src/sys/arch/sh3/sh3/disksubr.c
diff -u src/sys/arch/sh3/sh3/disksubr.c:1.29 src/sys/arch/sh3/sh3/disksubr.c:1.30
--- src/sys/arch/sh3/sh3/disksubr.c:1.29 Thu May 16 15:06:45 2013
+++ src/sys/arch/sh3/sh3/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.29 2013/05/16 19:06:45 christos Exp $ */
+/* $NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.29 2013/05/16 19:06:45 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.30 2019/04/03 22:10:51 christos Exp $");
#include "opt_mbr.h"
@@ -529,61 +529,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/arch/vax/vax/disksubr.c
diff -u src/sys/arch/vax/vax/disksubr.c:1.53 src/sys/arch/vax/vax/disksubr.c:1.54
--- src/sys/arch/vax/vax/disksubr.c:1.53 Fri Jun 22 16:42:23 2012
+++ src/sys/arch/vax/vax/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.53 2012/06/22 20:42:23 abs Exp $ */
+/* $NetBSD: disksubr.c,v 1.54 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.53 2012/06/22 20:42:23 abs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.54 2019/04/03 22:10:51 christos Exp $");
#include "opt_compat_ultrix.h"
@@ -199,46 +199,6 @@ done:
#endif /* COMPAT_ULTRIX */
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp,
- u_long openmask, struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
* Always allow writing of disk label; even if the disk is unlabeled.
*/
Index: src/sys/arch/x68k/x68k/disksubr.c
diff -u src/sys/arch/x68k/x68k/disksubr.c:1.34 src/sys/arch/x68k/x68k/disksubr.c:1.35
--- src/sys/arch/x68k/x68k/disksubr.c:1.34 Thu May 5 00:38:20 2011
+++ src/sys/arch/x68k/x68k/disksubr.c Wed Apr 3 18:10:51 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.34 2011/05/05 04:38:20 tsutsui Exp $ */
+/* $NetBSD: disksubr.c,v 1.35 2019/04/03 22:10:51 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.34 2011/05/05 04:38:20 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.35 2019/04/03 22:10:51 christos Exp $");
#include "opt_compat_netbsd.h"
@@ -250,62 +250,6 @@ done:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- /*|| (nlp->d_secsize % DEV_BSIZE) != 0*/)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- if (osdep)
- parttbl_consistency_check(nlp, osdep->dosparts);
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- npp->p_fstype = opp->p_fstype;
- npp->p_fsize = opp->p_fsize;
- npp->p_frag = opp->p_frag;
- npp->p_cpg = opp->p_cpg;
- }
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
*/
int
Index: src/sys/dev/sun/disksubr.c
diff -u src/sys/dev/sun/disksubr.c:1.15 src/sys/dev/sun/disksubr.c:1.16
--- src/sys/dev/sun/disksubr.c:1.15 Sun Feb 26 04:49:40 2017
+++ src/sys/dev/sun/disksubr.c Wed Apr 3 18:10:52 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: disksubr.c,v 1.15 2017/02/26 09:49:40 martin Exp $ */
+/* $NetBSD: disksubr.c,v 1.16 2019/04/03 22:10:52 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -55,7 +55,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.15 2017/02/26 09:49:40 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disksubr.c,v 1.16 2019/04/03 22:10:52 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -164,46 +164,6 @@ readdisklabel(dev_t dev, void (*strat)(s
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask, struct cpu_disklabel *clp)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0 ||
- (nlp->d_secsize % DEV_BSIZE) != 0)
- return(EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- dkcksum(nlp) != 0)
- return (EINVAL);
-
- while ((i = ffs(openmask)) != 0) {
- i--;
- openmask &= ~(1 << i);
- if (nlp->d_npartitions <= i)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- }
-
- *olp = *nlp;
- return (0);
-}
-
-/*
* Write disk label back to device after modification.
* Current label is already in clp->cd_block[]
*/
Index: src/sys/kern/subr_disk.c
diff -u src/sys/kern/subr_disk.c:1.123 src/sys/kern/subr_disk.c:1.124
--- src/sys/kern/subr_disk.c:1.123 Wed Mar 27 15:13:33 2019
+++ src/sys/kern/subr_disk.c Wed Apr 3 18:10:52 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_disk.c,v 1.123 2019/03/27 19:13:33 martin Exp $ */
+/* $NetBSD: subr_disk.c,v 1.124 2019/04/03 22:10:52 christos Exp $ */
/*-
* Copyright (c) 1996, 1997, 1999, 2000, 2009 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.123 2019/03/27 19:13:33 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_disk.c,v 1.124 2019/04/03 22:10:52 christos Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -740,3 +740,75 @@ disk_set_info(device_t dev, struct disk
if (odisk_info)
prop_object_release(odisk_info);
}
+
+#ifndef __HAVE_SETDISKLABEL
+
+#ifdef DEBUG
+#define DPRINTF(a, ...) printf(a, __VA_ARGS__)
+#else
+#define DPRINTF(a, ...) __nothing
+#endif
+
+/*
+ * Check new disk label for sensibility
+ * before setting it.
+ */
+int
+setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
+ struct cpu_disklabel *osdep)
+{
+ int i;
+ struct partition *opp, *npp;
+
+ /* sanity clause */
+ if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
+ || (nlp->d_secsize % DEV_BSIZE) != 0) {
+ DPRINTF("%s: secpercyl/secsize %u/%u\n", __func__,
+ nlp->d_secpercyl, nlp->d_secsize);
+ return EINVAL;
+ }
+
+ /* special case to allow disklabel to be invalidated */
+ if (nlp->d_magic == 0xffffffff) {
+ *olp = *nlp;
+ return 0;
+ }
+
+ if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
+ nlp->d_npartitions > MAXPARTITIONS || dkcksum(nlp) != 0) {
+ DPRINTF("%s: bad magic %#x/%#x != %#x, partitions %u != %u"
+ ", bad sum=%#x\n", __func__,
+ nlp->d_magic, nlp->d_magic2, DISKMAGIC,
+ nlp->d_npartitions, MAXPARTITIONS, dkcksum(nlp));
+ return EINVAL;
+ }
+
+ while (openmask != 0) {
+ i = ffs(openmask) - 1;
+ openmask &= ~(1 << i);
+ if (i >= nlp->d_npartitions) {
+ DPRINTF("partition not found\n");
+ return EBUSY;
+ }
+ opp = &olp->d_partitions[i];
+ npp = &nlp->d_partitions[i];
+ /*
+ * Copy internally-set partition information
+ * if new label doesn't include it. XXX
+ */
+ if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
+ *npp = *opp;
+ continue;
+ }
+ if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
+ {
+ DPRINTF("%s: mismatched offset/size", __func__);
+ return EBUSY;
+ }
+ }
+ nlp->d_checksum = 0;
+ nlp->d_checksum = dkcksum(nlp);
+ *olp = *nlp;
+ return 0;
+}
+#endif
Index: src/sys/kern/subr_disk_mbr.c
diff -u src/sys/kern/subr_disk_mbr.c:1.49 src/sys/kern/subr_disk_mbr.c:1.50
--- src/sys/kern/subr_disk_mbr.c:1.49 Sun Jan 21 11:55:25 2018
+++ src/sys/kern/subr_disk_mbr.c Wed Apr 3 18:10:52 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_disk_mbr.c,v 1.49 2018/01/21 16:55:25 christos Exp $ */
+/* $NetBSD: subr_disk_mbr.c,v 1.50 2019/04/03 22:10:52 christos Exp $ */
/*
* Copyright (c) 1982, 1986, 1988 Regents of the University of California.
@@ -54,7 +54,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_disk_mbr.c,v 1.49 2018/01/21 16:55:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_disk_mbr.c,v 1.50 2019/04/03 22:10:52 christos Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -694,59 +694,6 @@ corrupted:
}
/*
- * Check new disk label for sensibility
- * before setting it.
- */
-int
-setdisklabel(struct disklabel *olp, struct disklabel *nlp, u_long openmask,
- struct cpu_disklabel *osdep)
-{
- int i;
- struct partition *opp, *npp;
-
- /* sanity clause */
- if (nlp->d_secpercyl == 0 || nlp->d_secsize == 0
- || (nlp->d_secsize % DEV_BSIZE) != 0)
- return (EINVAL);
-
- /* special case to allow disklabel to be invalidated */
- if (nlp->d_magic == 0xffffffff) {
- *olp = *nlp;
- return (0);
- }
-
- if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
- nlp->d_npartitions > MAXPARTITIONS || dkcksum(nlp) != 0)
- return (EINVAL);
-
- /* XXX missing check if other dos partitions will be overwritten */
-
- while (openmask != 0) {
- i = ffs(openmask) - 1;
- openmask &= ~(1 << i);
- if (i >= nlp->d_npartitions)
- return (EBUSY);
- opp = &olp->d_partitions[i];
- npp = &nlp->d_partitions[i];
- /*
- * Copy internally-set partition information
- * if new label doesn't include it. XXX
- */
- if (npp->p_fstype == FS_UNUSED && opp->p_fstype != FS_UNUSED) {
- *npp = *opp;
- continue;
- }
- if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
- return (EBUSY);
- }
- nlp->d_checksum = 0;
- nlp->d_checksum = dkcksum(nlp);
- *olp = *nlp;
- return (0);
-}
-
-
-/*
* Write disk label back to device after modification.
*/
int