Normalize label handling.

This commit is contained in:
mycroft 1994-07-26 19:39:19 +00:00
parent 1e24ff6b3b
commit 863c736e39
2 changed files with 16 additions and 14 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: sd.c,v 1.34 1994/07/04 20:39:53 chopps Exp $ */ /* $NetBSD: sd.c,v 1.35 1994/07/26 19:39:19 mycroft Exp $ */
/* /*
* Copyright (c) 1994 Charles Hannum. All rights reserved. * Copyright (c) 1994 Charles Hannum. All rights reserved.
@ -75,13 +75,14 @@ int Debugger();
#define SDOUTSTANDING 2 #define SDOUTSTANDING 2
#define SDRETRIES 4 #define SDRETRIES 4
#define MAKESDDEV(maj, unit, part) \ #define SDUNIT(dev) (minor(dev) / MAXPARTITIONS)
#define SDPART(dev) (minor(dev) % MAXPARTITIONS)
#define makesddev(maj, unit, part) \
(makedev((maj), ((unit) * MAXPARTITIONS) + (part))) (makedev((maj), ((unit) * MAXPARTITIONS) + (part)))
#define SDPART(z) (minor(z) % MAXPARTITIONS)
#define SDUNIT(z) (minor(z) / MAXPARTITIONS)
#ifndef RAW_PART #ifndef RAW_PART
#define RAW_PART 3 /* XXX should be 2 */ #define RAW_PART 3 /* XXX should be 2 */
#endif #endif
#define SDLABELDEV(dev) (makesddev(major(dev), SDUNIT(dev), RAW_PART))
struct sd_data { struct sd_data {
struct device sc_dev; struct device sc_dev;
@ -605,7 +606,7 @@ sdioctl(dev, cmd, addr, flag)
sd->openparts |= (1 << 0); /* XXXX */ sd->openparts |= (1 << 0); /* XXXX */
wlab = sd->wlabel; wlab = sd->wlabel;
sd->wlabel = 1; sd->wlabel = 1;
error = writedisklabel(dev, sdstrategy, error = writedisklabel(SDLABELDEV(dev), sdstrategy,
&sd->sc_dk.dk_label, &sd->sc_dk.dk_cpulabel); &sd->sc_dk.dk_label, &sd->sc_dk.dk_cpulabel);
sd->wlabel = wlab; sd->wlabel = wlab;
return error; return error;
@ -664,7 +665,7 @@ sdgetdisklabel(sd)
/* /*
* Call the generic disklabel extraction routine * Call the generic disklabel extraction routine
*/ */
if (errstring = readdisklabel(MAKESDDEV(0, sd->sc_dev.dv_unit, if (errstring = readdisklabel(makesddev(0, sd->sc_dev.dv_unit,
RAW_PART), sdstrategy, &sd->sc_dk.dk_label, RAW_PART), sdstrategy, &sd->sc_dk.dk_label,
&sd->sc_dk.dk_cpulabel)) { &sd->sc_dk.dk_cpulabel)) {
printf("%s: %s\n", sd->sc_dev.dv_xname, errstring); printf("%s: %s\n", sd->sc_dev.dv_xname, errstring);
@ -839,7 +840,7 @@ sdsize(dev_t dev)
return -1; return -1;
if ((sd->flags & SDHAVELABEL) == 0) { if ((sd->flags & SDHAVELABEL) == 0) {
val = sdopen(MAKESDDEV(major(dev), unit, RAW_PART), FREAD, val = sdopen(makesddev(major(dev), unit, RAW_PART), FREAD,
S_IFBLK, 0); S_IFBLK, 0);
if (val != 0) if (val != 0)
return -1; return -1;

View File

@ -1,4 +1,4 @@
/* $NetBSD: sd.c,v 1.34 1994/07/04 20:39:53 chopps Exp $ */ /* $NetBSD: sd.c,v 1.35 1994/07/26 19:39:19 mycroft Exp $ */
/* /*
* Copyright (c) 1994 Charles Hannum. All rights reserved. * Copyright (c) 1994 Charles Hannum. All rights reserved.
@ -75,13 +75,14 @@ int Debugger();
#define SDOUTSTANDING 2 #define SDOUTSTANDING 2
#define SDRETRIES 4 #define SDRETRIES 4
#define MAKESDDEV(maj, unit, part) \ #define SDUNIT(dev) (minor(dev) / MAXPARTITIONS)
#define SDPART(dev) (minor(dev) % MAXPARTITIONS)
#define makesddev(maj, unit, part) \
(makedev((maj), ((unit) * MAXPARTITIONS) + (part))) (makedev((maj), ((unit) * MAXPARTITIONS) + (part)))
#define SDPART(z) (minor(z) % MAXPARTITIONS)
#define SDUNIT(z) (minor(z) / MAXPARTITIONS)
#ifndef RAW_PART #ifndef RAW_PART
#define RAW_PART 3 /* XXX should be 2 */ #define RAW_PART 3 /* XXX should be 2 */
#endif #endif
#define SDLABELDEV(dev) (makesddev(major(dev), SDUNIT(dev), RAW_PART))
struct sd_data { struct sd_data {
struct device sc_dev; struct device sc_dev;
@ -605,7 +606,7 @@ sdioctl(dev, cmd, addr, flag)
sd->openparts |= (1 << 0); /* XXXX */ sd->openparts |= (1 << 0); /* XXXX */
wlab = sd->wlabel; wlab = sd->wlabel;
sd->wlabel = 1; sd->wlabel = 1;
error = writedisklabel(dev, sdstrategy, error = writedisklabel(SDLABELDEV(dev), sdstrategy,
&sd->sc_dk.dk_label, &sd->sc_dk.dk_cpulabel); &sd->sc_dk.dk_label, &sd->sc_dk.dk_cpulabel);
sd->wlabel = wlab; sd->wlabel = wlab;
return error; return error;
@ -664,7 +665,7 @@ sdgetdisklabel(sd)
/* /*
* Call the generic disklabel extraction routine * Call the generic disklabel extraction routine
*/ */
if (errstring = readdisklabel(MAKESDDEV(0, sd->sc_dev.dv_unit, if (errstring = readdisklabel(makesddev(0, sd->sc_dev.dv_unit,
RAW_PART), sdstrategy, &sd->sc_dk.dk_label, RAW_PART), sdstrategy, &sd->sc_dk.dk_label,
&sd->sc_dk.dk_cpulabel)) { &sd->sc_dk.dk_cpulabel)) {
printf("%s: %s\n", sd->sc_dev.dv_xname, errstring); printf("%s: %s\n", sd->sc_dev.dv_xname, errstring);
@ -839,7 +840,7 @@ sdsize(dev_t dev)
return -1; return -1;
if ((sd->flags & SDHAVELABEL) == 0) { if ((sd->flags & SDHAVELABEL) == 0) {
val = sdopen(MAKESDDEV(major(dev), unit, RAW_PART), FREAD, val = sdopen(makesddev(major(dev), unit, RAW_PART), FREAD,
S_IFBLK, 0); S_IFBLK, 0);
if (val != 0) if (val != 0)
return -1; return -1;