Commit Graph

64 Commits

Author SHA1 Message Date
Rodney W. Grimes
9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
David Greenman
d53eacdf28 This should fix PR 438. Apparently I never tested disklabel on the block
device.

v_numoutput wasn't incremented to match the b_iodone nesting.  It's still
fishy that vwakeup() clears B_WRITEINPROG before biodone() has finished;
however, B_WRITEINPROG seems to be never used.

Submitted by:	Bruce Evans
1995-05-24 23:33:42 +00:00
Bruce Evans
599eb538d8 Fix reopening of open subdevices for DIOCSYNCSLICEINFO:
Reopen the bdev for the raw partition and not the cdev if only the bdev
was open.
Don't use a bogus limit for the number of partitions to possibly reopen
(bug found by Julian).

Add function dssize() to help fix wdsize() and sdsize().  The slice
layer knows more about (un)open partitions and partition sizes than
the driver layer.
1995-05-08 16:24:08 +00:00
Bruce Evans
0c3f2f6436 Change dsioctl() interface to allow DIOCSYNCSLICEINFO to update the caller's
slice pointer and to print the device name in error messages.

Finishing implementing DIOCSYNCSLICEINFO (except for locking).
1995-04-30 15:16:02 +00:00
Bruce Evans
48b2a92193 Add ioctls DIOCGSLICEINFO and DIOCSYNCSLICEINFO. The latter isn't
finished or tested.
1995-04-24 17:07:08 +00:00
Bruce Evans
b0ba7f5601 Make bad144 debugging code conditional on ds_debug. 1995-04-24 06:04:36 +00:00
Bruce Evans
2973a0eba4 Don't warn about missing labels for non-BSD slices.
Don't print debugging messages by default.

Initialize the compatibility slice here and not in the machine-dependent
code.

Fix initialization of the label for the whole disk slice.

Make it clear that write protection of labels doesn't apply when there is
no label.
1995-03-04 11:42:27 +00:00
Bruce Evans
ae623967ec Fix initialization of the copy of the label passed to setdisklabel().
Fix the sign of the adjustment after writing a label.

Writing of labels should work now.

Merge adjust_label() into fixlabel().  Detect more errors and don't
write if there is an error.  Adjust sectors/unit and total sectors
to the numbers on the slice.

Add a function dsname() to print slice device names consistently, and
use it.
1995-02-22 21:51:53 +00:00
Bruce Evans
cf343b5640 Discard junk from partition tables when reading the tables for applications
the same as when initializing the in-core copies.  Adjust checksums in
labels after adjusting labels.  This finishes fudging the on-disk label to
make it coherent with the in-core label.

Handle EIO during initialization better.

Initialize the compatibility slice to the whole disk If there are no real
slices.

Don't warn about adjusting offsets in the label to make the 'c' partition
start at 0.  The 'c' offset is now always absolute on-disk and 0 in-core
so an adjustment is usually required.

Don't confuse LABEL_PART with RAW_PART so much.

Check for partitions being within slices differently.
1995-02-21 08:38:24 +00:00
Bruce Evans
bd6edcba54 Keep absolute offsets in on-disk labels for backwards compatibility. This
requires complications to adjust the offsets to relative when a block
containing the label is read and back to absolute when such a block is
written.  The adjustment is not made on the whole disk slice.

Don't allow setting the offset of partition C to nonzero in in-core labels.
This will cause some (nonstandard) disktab entries to fail.  They will
need to be changed to have relative offsets (and no partitions outside
of the slice).

Don't write protect the (nonexistent) label on the whole disk slice.

Writing labels and bootstraps should work right now (except if there is
no DOSpartition table).
1995-02-18 22:10:44 +00:00
Bruce Evans
7a867ed547 Add compatibility cruft.
Slice 0 is now for the first BSD slice.  The first BSD slice is
the first DOSpartition with id 0xa5 or the whole disk if their
are no DOSpartitions (except the latter is not yet implemented).
Existing partitions on it work the same as in 2.0 except the
'd' partition is no longer special and partitions are relative
to the skice.

Slice 1 is now for the whole disk and gets a read-only label
describing the disk.  Previously, slice 0 was for the whole disk
and there was no label on it.

Slices 2-31 are for DOSpartitions.  Slice 0 is an alias for one
of these if there is a BSD slice.  Previously, slices 1-31 were
for DOSpartitions.

diskslice_machdep.c:
Expand whole disk slice to include all DOSpartitions.  More work
is required for >1024 cylinders and to rewrite the label iff the
driver is unsure about the geometry.

subr_diskslice.c:
New function dsisopen() to help handle media changes.
1995-02-16 15:19:19 +00:00
Poul-Henning Kamp
087b6ad948 $Id: -> $Id$ 1995-01-31 04:33:41 +00:00
Bruce Evans
9af6068321 Separate go-away code from dsinit() to produce dsgone().
Call correct_writedisklabel() instead of writedisklabel() (temporary
compatibility hack).

Remove kludge for allowing a label on slice 0.
1994-12-16 16:14:39 +00:00
Bruce Evans
d1f35d579f subr_diskslice.c implements everything related to slices and labels except
reading and writing the slice tables and labels.

subr_dkbad.c implements everything related to bad sector remapping using
the bad144 format.
1994-12-12 00:20:34 +00:00