affects cases where there is a slave but no master. These bugs
were usually recovered from provided ATAPI was configured, but only
after lengthy delays. Configuring ATAPI still fixes some bugs for
non-atapi drives.
Don't wait for seek complete in wdreset(). If necessary for pre-ata
drives, it can be waited for later (we got it wrong by only looking
at it for drive 0 anyway). It is set as part of a historical
signature for ata drives but doesn't say anything useful about the
reset state. It is cleared as part of a non-historical signature
for atapi drives so that drivers which don't understand atapi drives
seem to see no drive. Waiting for it caused lengthy delays and
broke the status returned by wdreset() in cases where the master
was not an ata drive. Then the whole wdprobe() failed in some
cases where the recovery code didn't work.
Don't wait for drive ready in wdreset(). The considerations are
the same as for seek complete, except drive ready does say something
useful about the reset state of ata drives, and waiting for it
later is required anyway for such drives.
Lengthy delays can now be avoided by not configuring nonexistent
(ata) drives. Unfortunately, this breaks detection of atapi drives
in some configurations.
Recognize aic7895 controllers that have been "acquired" by a RAIDPort
card as normal aic7895s.
Recognize the aic7815 Raid Parity/Memory controller chip and notify
the user that it's RAID functionality will be ignored.
Don't mess with the IRQMS bit in the host control register unless
we are an aic7770 chip.
Use calling context to determine if the card is already paused when
we update the target message request bit field in controller scratch
ram. Looking at the paused bit in the HCNTRL register opened up a
race condition.
Insert delays in the target message request update routine as a temporary
work around for what looks like a chip bug. I'm still investigating this
one.
Fix the Abort/Abort Tag/BDR handler to pull its message from the message
buffer in our softc instead of attempting to get it from a register on
the controller. The message is never recorded by the controller in the
new message scheme.
Don't rely on having an SCB when a BDR occurs. We can issue these during
invalid reconnects to.
Fix a few cases where we were restarting the sequencer but then still
falling out of a switch statement to unpause the sequencer again.
This could cause us to mess up sequencer state if it generated another
pausing interrupt between the time of the restart and unpause.
Kill the 'transceiver settle' loop during card initialization. I
failed to realize that a controller that is not connected to any
cables will never settle or enable the SCSI transceivers at all.
The correct solution is to monitor the IOERR interrupt which indicates
that the transceiver state has changed (UW<->LVD).
Modify the aic7xxx assembler to properly echo input when stdin is not
a tty.
remove the splbio() around the call to launch read requests.
launch_requests:
Move the splbio() protection outside the entire launch_loop. The
previous location was causing problems with IDE drives, where the
call to the strategy routine often did not complete until after
complete_rqe deallocated the request structure.
Solution-independently-found-by: Russell Neeper <r-neeper@tamu.edu>
Problem-reported-by: Vallo Kallaste <vallo@matti.ee>
John Saunders <john@nlc.net.au>
Bernd Walter <ticso@cicely.de> (maybe)
Check for partition types FS_VINUM and FS_UNUSED. Accept both, but
complain about FS_UNUSED. At a later date, only FS_VINUM will be
accepted.
Threatened-since: over a year
Add a flag `force' (VF_FORCECONFIG) to force name changes of
existing drives.
config_drive:
If the drive already has a vinum label, and name doesn't match the
specified drive, do it anyway if the 'force' flag is specified.
finish_config:
Reset the `force' flag.
Continually-tripped-over-by: Karl Pielorz <kpielorz@tdx.co.uk>
give_sd_to_drive:
If the drive is down, take the subdisk down and don't try to fix
things.
update_plex_config:
Don't try to update the config parameters of a plex which isn't
fully configured (state plex_init or plex_unallocated).
Correctly calculate the amount to trim off a striped or RAID-5 plex
whose size is not a multiple of the stripe size.
/usr/sbin/sysctl -> ${DESTDIR}/sbin/sysctl in some versions of 2.2,
and this link was broken if DESTDIR was set.
Added a SYMLINKS macro. This works the same as LINKS, except it
creates symlinks and the linked-to pathname may be relative. This
is more flexible than LN_FLAGS, since it supports installing
symlinks independently of hard links.
Use `ln -f[s] ...' instead of `rm -f ...; ln [-s] ...' for LINKS and
SYMLINKS. This is equivalent if the target is neither a directory nor
a symlink to a directory.
PR: 8279
Remove more (redundant) map timestamp increments from properly
synchronized routines. (Changed: vm_map_entry_link, vm_map_entry_unlink,
and vm_map_pageable.)
Micro-optimize vm_map_entry_link and vm_map_entry_unlink, eliminating
unnecessary dereferences. At the same time, converted them from macros
to inline functions.
compiled with or without debugging support. This enables us to catch
(fatal) mismatches between the kernel and userland.
Coalesce flags VINUM_DISKCONFIG and VINUM_READING_CONFIG. They did
essentially the same thing.
Add VINUM_BIGDRIVE for pretending we have macho hardware.
pretends that each drive is 100 times as large as it really is. Not
for use at home.
Coalesce flags VINUM_DISKCONFIG and VINUM_READING_CONFIG. They did
essentially the same thing.
This solved a problem where 'vinum resetconfig' only reset half
the drives.
Reported-by: Brad Knowles <blk@skynet.be>
Karl Pielorz <kpielorz@tdx.co.uk>
Change the super device. We now have three super devices:
1. The normal superdevice used by vinum(8).
2. The superdevice used by vinum(8) when compiled with debug support.
3. The superdevice used by the daemon.
This method allows vinum(8) to determine debug mismatches. Also check
correctly for the device type. The old code did not check all bits of
the minor number.
Reported-by: a cast of thousands, most recently by Brad Knowles
<blk@skynet.be>.
address) so that the first 16MB of physical memory is allocated
last rather than first. On large-memory machines, this avoids
the exhaustion of low physical memory before isa_dmainit has run.
for passing in their own data space and associated page table information.
Update the support files so that any pages in the vm86 page table are
mapped, rather than just one page.
Restore the E820 memory probe, and have it use the new interface.
of private_tss, and there's no need to use a bit array. Also fixes
the problem of using `je' after btrl, since cmpl sets ZF.
Noticed by: Luoqi, on -current
with the new boot loader configuration process. I got a lot of
help from Daniel Sobral, and both Dan and I got help from Mike
Smith. This really belongs in Warner's UPDATING, but he's not
been answering his email recently, so that will wait a little.
Robert Nordier also gave me a lot of help, but he hasn't seen the
last version, and can't be blamed for my errors.
Approved by: jkh
Reviewed by: Mike Smith