summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1998-02-22 10:11:23 +0000
committerdg <dg@FreeBSD.org>1998-02-22 10:11:23 +0000
commit59689f1f05493a8789b2a31a81091f52611d1879 (patch)
treecd2cb25fc42abfef2fdd958009030f106c5188a7
parentb3147e8cdbf90187ece6de9d36ab264d9f429134 (diff)
downloadFreeBSD-src-59689f1f05493a8789b2a31a81091f52611d1879.zip
FreeBSD-src-59689f1f05493a8789b2a31a81091f52611d1879.tar.gz
The changes I had made long ago to support >32 disk-type units was
incomplete; dkmakeminor was broken for >32. I noticed this when trying to use more than 32 ccd units on wcarchive. Reviewed by: bde
-rw-r--r--sys/sys/disklabel.h5
-rw-r--r--sys/sys/diskmbr.h5
-rw-r--r--sys/sys/diskpc98.h5
3 files changed, 9 insertions, 6 deletions
diff --git a/sys/sys/disklabel.h b/sys/sys/disklabel.h
index 2d21452..58ad909 100644
--- a/sys/sys/disklabel.h
+++ b/sys/sys/disklabel.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)disklabel.h 8.2 (Berkeley) 7/10/94
- * $Id: disklabel.h,v 1.29 1998/02/01 20:08:36 bde Exp $
+ * $Id: disklabel.h,v 1.30 1998/02/17 10:50:20 jkh Exp $
*/
#ifndef _SYS_DISKLABEL_H_
@@ -414,7 +414,8 @@ struct dos_partition {
-----------------------------------------------------------------
*/
#define dkmakeminor(unit, slice, part) \
- (((slice) << 16) | ((unit) << 3) | (part))
+ (((slice) << 16) | (((unit) & 0x1e0) << 16) | \
+ (((unit) & 0x1f) << 3) | (part))
#define dkmodpart(dev, part) (((dev) & ~(dev_t)7) | (part))
#define dkmodslice(dev, slice) (((dev) & ~(dev_t)0x1f0000) | ((slice) << 16))
#define dkpart(dev) (minor(dev) & 7)
diff --git a/sys/sys/diskmbr.h b/sys/sys/diskmbr.h
index 2d21452..58ad909 100644
--- a/sys/sys/diskmbr.h
+++ b/sys/sys/diskmbr.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)disklabel.h 8.2 (Berkeley) 7/10/94
- * $Id: disklabel.h,v 1.29 1998/02/01 20:08:36 bde Exp $
+ * $Id: disklabel.h,v 1.30 1998/02/17 10:50:20 jkh Exp $
*/
#ifndef _SYS_DISKLABEL_H_
@@ -414,7 +414,8 @@ struct dos_partition {
-----------------------------------------------------------------
*/
#define dkmakeminor(unit, slice, part) \
- (((slice) << 16) | ((unit) << 3) | (part))
+ (((slice) << 16) | (((unit) & 0x1e0) << 16) | \
+ (((unit) & 0x1f) << 3) | (part))
#define dkmodpart(dev, part) (((dev) & ~(dev_t)7) | (part))
#define dkmodslice(dev, slice) (((dev) & ~(dev_t)0x1f0000) | ((slice) << 16))
#define dkpart(dev) (minor(dev) & 7)
diff --git a/sys/sys/diskpc98.h b/sys/sys/diskpc98.h
index 2d21452..58ad909 100644
--- a/sys/sys/diskpc98.h
+++ b/sys/sys/diskpc98.h
@@ -31,7 +31,7 @@
* SUCH DAMAGE.
*
* @(#)disklabel.h 8.2 (Berkeley) 7/10/94
- * $Id: disklabel.h,v 1.29 1998/02/01 20:08:36 bde Exp $
+ * $Id: disklabel.h,v 1.30 1998/02/17 10:50:20 jkh Exp $
*/
#ifndef _SYS_DISKLABEL_H_
@@ -414,7 +414,8 @@ struct dos_partition {
-----------------------------------------------------------------
*/
#define dkmakeminor(unit, slice, part) \
- (((slice) << 16) | ((unit) << 3) | (part))
+ (((slice) << 16) | (((unit) & 0x1e0) << 16) | \
+ (((unit) & 0x1f) << 3) | (part))
#define dkmodpart(dev, part) (((dev) & ~(dev_t)7) | (part))
#define dkmodslice(dev, slice) (((dev) & ~(dev_t)0x1f0000) | ((slice) << 16))
#define dkpart(dev) (minor(dev) & 7)
OpenPOWER on IntegriCloud