Merge changes from sun3 port; per Gordon.
This commit is contained in:
parent
ee08e9085b
commit
a2a4da4874
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: disksubr.c,v 1.9 1995/09/01 17:19:50 pk Exp $ */
|
/* $NetBSD: disksubr.c,v 1.10 1995/11/29 23:43:42 pk Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1994, 1995 Gordon W. Ross
|
* Copyright (c) 1994, 1995 Gordon W. Ross
|
||||||
@ -221,7 +221,7 @@ setdisklabel(olp, nlp, openmask, clp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
|
if (nlp->d_magic != DISKMAGIC || nlp->d_magic2 != DISKMAGIC ||
|
||||||
dkcksum(nlp) != 0)
|
dkcksum(nlp) != 0)
|
||||||
return (EINVAL);
|
return (EINVAL);
|
||||||
|
|
||||||
while ((i = ffs((long)openmask)) != 0) {
|
while ((i = ffs((long)openmask)) != 0) {
|
||||||
@ -233,19 +233,8 @@ setdisklabel(olp, nlp, openmask, clp)
|
|||||||
npp = &nlp->d_partitions[i];
|
npp = &nlp->d_partitions[i];
|
||||||
if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
|
if (npp->p_offset != opp->p_offset || npp->p_size < opp->p_size)
|
||||||
return (EBUSY);
|
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;
|
*olp = *nlp;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
@ -391,7 +380,8 @@ disklabel_sun_to_bsd(cp, lp)
|
|||||||
return("SunOS disk label, bad checksum");
|
return("SunOS disk label, bad checksum");
|
||||||
|
|
||||||
/* Format conversion. */
|
/* Format conversion. */
|
||||||
lp->d_magic = 0;/* denote as pseudo */
|
lp->d_magic = DISKMAGIC;
|
||||||
|
lp->d_magic2 = DISKMAGIC;
|
||||||
memcpy(lp->d_packname, sl->sl_text, sizeof(lp->d_packname));
|
memcpy(lp->d_packname, sl->sl_text, sizeof(lp->d_packname));
|
||||||
|
|
||||||
lp->d_secsize = 512;
|
lp->d_secsize = 512;
|
||||||
@ -418,10 +408,24 @@ disklabel_sun_to_bsd(cp, lp)
|
|||||||
npp = &lp->d_partitions[i];
|
npp = &lp->d_partitions[i];
|
||||||
npp->p_offset = spp->sdkp_cyloffset * secpercyl;
|
npp->p_offset = spp->sdkp_cyloffset * secpercyl;
|
||||||
npp->p_size = spp->sdkp_nsectors;
|
npp->p_size = spp->sdkp_nsectors;
|
||||||
if (npp->p_size)
|
if (npp->p_size == 0) {
|
||||||
|
npp->p_fstype = FS_UNUSED;
|
||||||
|
} else {
|
||||||
npp->p_fstype = sun_fstypes[i];
|
npp->p_fstype = sun_fstypes[i];
|
||||||
|
if (npp->p_fstype == FS_BSDFFS) {
|
||||||
|
/*
|
||||||
|
* The sun label does not store the FFS fields,
|
||||||
|
* so just set them with default values here.
|
||||||
|
*/
|
||||||
|
npp->p_fsize = 1024;
|
||||||
|
npp->p_frag = 8;
|
||||||
|
npp->p_cpg = 16;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lp->d_checksum = 0;
|
||||||
|
lp->d_checksum = dkcksum(lp);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -442,6 +446,9 @@ disklabel_bsd_to_sun(lp, cp)
|
|||||||
int i, secpercyl;
|
int i, secpercyl;
|
||||||
u_short cksum, *sp1, *sp2;
|
u_short cksum, *sp1, *sp2;
|
||||||
|
|
||||||
|
if (lp->d_secsize != 512)
|
||||||
|
return (EINVAL);
|
||||||
|
|
||||||
sl = (struct sun_disklabel *)cp;
|
sl = (struct sun_disklabel *)cp;
|
||||||
|
|
||||||
/* Format conversion. */
|
/* Format conversion. */
|
||||||
|
Loading…
Reference in New Issue
Block a user