Commit Graph

14891 Commits

Author SHA1 Message Date
Kirk McKusick
224a6aa241 Severe slowdowns have been reported when creating or removing many
files at once on a filesystem running soft updates. The root of
the problem is that soft updates limits the amount of memory that
may be allocated to dependency structures so as to avoid hogging
kernel memory. The original algorithm just waited for the disk I/O
to catch up and reduce the number of dependencies. This new code
takes a much more aggressive approach. Basically there are two
resources that routinely hit the limit. Inode dependencies during
periods with a high file creation rate and file and block removal
dependencies during periods with a high file removal rate. I have
attacked these problems from two fronts. When the inode dependency
limits are reached, I pick a random inode dependency, UFS_UPDATE
it together with all the other dirty inodes contained within its
disk block and then write that disk block. This trick usually
clears 5-50 inode dependencies in a single disk I/O. For block and
file removal dependencies, I pick a random directory page that has
at least one remove pending and VOP_FSYNC its directory. That
releases all its removal dependencies to the work queue. To further
hasten things along, I also immediately start the work queue process
rather than waiting for its next one second scheduled run.
1999-05-07 02:26:47 +00:00
Greg Lehey
560863926b Remove old grunge, including references to sys/disk.h (which is going
away).

Submitted-by:	phk
1999-05-07 01:35:29 +00:00
Greg Lehey
d65937394f Remove old grunge
Submitted-by:	phk
1999-05-07 01:25:54 +00:00
Peter Wemm
691343c4f8 Use id_ointr for setting the pnp interrupt handler, it uses the oldstyle
int unit argument still.
1999-05-06 22:26:28 +00:00
Peter Wemm
debf951175 ``fix'' the devfs_add_devswf() calls, the printf string wasn't factoring
in the unit number.  I'm not so sure about this at all, the SVR4 systems
I have access to have a mixture of names and often %03d format units.
1999-05-06 22:21:31 +00:00
Peter Wemm
bbdc01224f Undo excess staticization - these two are meant to be callable from
DDB.
1999-05-06 22:19:38 +00:00
Peter Wemm
1ce418a67d ahatimeout is static.. 1999-05-06 22:18:21 +00:00
Peter Wemm
5e80440b17 Use consistant function definitions which also silences a warning. 1999-05-06 22:17:26 +00:00
Peter Wemm
94f9940a0c Ensure prototype for pnp_configure() is visible. 1999-05-06 22:16:19 +00:00
Peter Wemm
ea5c2064b4 GC unused variable 1999-05-06 22:14:46 +00:00
Peter Wemm
ea861c7968 Pull in prototype for splq(). 1999-05-06 22:13:53 +00:00
Peter Wemm
284c724fb4 Fix a static/extern conflict. Put extra brackets to ensure the
tsleep() priority is clear and not parsed incorrectly.
1999-05-06 22:13:04 +00:00
Peter Wemm
ae89b422d5 Put the old-style isa interrupt handlers in id_ointr to avoid warnings. 1999-05-06 22:11:19 +00:00
Peter Wemm
189f4bb9c8 Fix a warning - make sure the register is read regardless of the debugging
options.
1999-05-06 22:09:55 +00:00
Peter Wemm
bb6f0e396b Fix two warnings; and note a problem where a pointer is stored in an
int variable - this can't work on an Alpha.
1999-05-06 22:08:57 +00:00
Peter Wemm
21a1062c12 One too many vfsops.. 1999-05-06 22:07:34 +00:00
Peter Wemm
4d38e6b5ec Add brackets to silence egcs and help clarity. 1999-05-06 22:06:45 +00:00
Peter Wemm
2850fee53f Fix a goof on my part; s/struct moduledata */struct module */ 1999-05-06 22:05:39 +00:00
Peter Wemm
481d658f1e Fix some variable naming confusion 1999-05-06 22:04:21 +00:00
Peter Wemm
3cca27dac6 GC unused pps_drvinit() declaration 1999-05-06 22:03:14 +00:00
Julian Elischer
d4439333ff Add Cyrix (NatSemi) 5520 and 5530 PCI-ISA bridges. 1999-05-06 21:21:30 +00:00
Kenneth D. Merry
db15b5b790 The base transfer speed for the parallel port bus is 93K/sec, not 3.3MB/sec.
Submitted by:	Nick Hibma <hibma@skylink.it>
1999-05-06 21:14:49 +00:00
Kenneth D. Merry
169b302922 Take out calls to cam_sim_set_basexfer_speed(), the base transfer speed is
now returned in the path inquiry CCB.

Submitted by:	Nick Hibma <hibma@skylink.it>
1999-05-06 21:12:58 +00:00
Nick Hibma
4ea5aa83d4 Add new member for XPT_PATH_INQ, follows recent changes in
version v1.2 of cam_sim.h.
1999-05-06 20:58:37 +00:00
Kenneth D. Merry
9deea8574e Add a number of interrelated CAM feature enhancements and bug fixes.
NOTE:  These changes will require recompilation of any userland
applications, like cdrecord, xmcd, etc., that use the CAM passthrough
interface.  A make world is recommended.

camcontrol.[c8]:
 - We now support two new commands, "tags" and "negotiate".

	- The tags commands allows users to view the number of tagged
	  openings for a device as well as a number of other related
	  parameters, and it allows users to set tagged openings for
	  a device.

	- The negotiate command allows users to enable and disable
	  disconnection and tagged queueing, set sync rates, offsets
	  and bus width.  Note that not all of those features are
	  available for all controllers.  Only the adv, ahc, and ncr
	  drivers fully support all of the features at this point.
	  Some cards do not allow the setting of sync rates, offsets and
	  the like, and some of the drivers don't have any facilities to
	  do so.  Some drivers, like the adw driver, only support enabling
	  or disabling sync negotiation, but do not support setting sync
	  rates.

 - new description in the camcontrol man page of how to format a disk
 - cleanup of the camcontrol inquiry command
 - add support in the 'devlist' command for skipping unconfigured devices if
   -v was not specified on the command line.
 - make use of the new base_transfer_speed in the path inquiry CCB.
 - fix CCB bzero cases

cam_xpt.c, cam_sim.[ch], cam_ccb.h:

 - new flags on many CCB function codes to designate whether they're
   non-immediate, use a user-supplied CCB, and can only be passed from
   userland programs via the xpt device.  Use these flags in the transport
   layer and pass driver to categorize CCBs.

 - new flag in the transport layer device matching code for device nodes
   that indicates whether a device is unconfigured

 - bump the CAM version from 0x10 to 0x11

 - Change the CAM ioctls to use the version as their group code, so we can
   force users to recompile code even when the CCB size doesn't change.

 - add + fill in a new value in the path inquiry CCB, base_transfer_speed.
   Remove a corresponding field from the cam_sim structure, and add code to
   every SIM to set this field to the proper value.

 - Fix the set transfer settings code in the transport layer.

scsi_cd.c:

 - make some variables volatile instead of just casting them in various
   places
 - fix a race condition in the changer code
 - attach unless we get a "logical unit not supported" error.  This should
   fix all of the cases where people have devices that return weird errors
   when they don't have media in the drive.

scsi_da.c:

 - attach unless we get a "logical unit not supported" error

scsi_pass.c:

 - for immediate CCBs, just malloc a CCB to send the user request in.  This
   gets rid of the 'held' count problem in camcontrol tags.

scsi_pass.h:

 - change the CAM ioctls to use the CAM version as their group code.

adv driver:

 - Allow changing the sync rate and offset separately.

adw driver

 - Allow changing the sync rate and offset separately.

aha driver:

 - Don't return CAM_REQ_CMP for SET_TRAN_SETTINGS CCBs.

ahc driver:

 - Allow setting offset and sync rate separately

bt driver:

 - Don't return CAM_REQ_CMP for SET_TRAN_SETTINGS CCBs.

NCR driver:

 - Fix the ultra/ultra 2 negotiation bug
 - allow setting both the sync rate and offset separately

Other HBA drivers:
 - Put code in to set the base_transfer_speed field for
   XPT_GET_TRAN_SETTINGS CCBs.

Reviewed by:	gibbs, mjacob (isp), imp (aha)
1999-05-06 20:16:39 +00:00
Poul-Henning Kamp
b0eeea2042 remove b_proc from struct buf, it's (now) unused.
Reviewed by:	dillon, bde
1999-05-06 20:00:34 +00:00
Poul-Henning Kamp
782e5999ff Oops, forgot this bit: don't use <sys/disk.h> 1999-05-06 19:35:55 +00:00
Poul-Henning Kamp
6cc5a7220c Don't use <sys/disk.h> 1999-05-06 19:19:30 +00:00
Poul-Henning Kamp
9f9431d611 Nuke bogus prototypes which have bogotified ccd and vinum
(who shouldn't really use this file in the first place!)
1999-05-06 19:07:06 +00:00
Peter Wemm
3f251a4979 Fix 'signed char as array index' warnings and an unused variable. 1999-05-06 18:58:05 +00:00
Peter Wemm
c41dbe5cc4 Missing 'int' in declaration of variables. 1999-05-06 18:54:19 +00:00
Peter Wemm
03a4d0108f Fix a precedence bug in the atapi tape driver. I think it could either
write a filemark where it wasn't needed, or neglect to write one at all,
depending on how the boolean converted to an int value for the &.
1999-05-06 18:50:10 +00:00
Peter Wemm
d5558c001a Fix up a few easy 'assignment used as truth value' and 'suggest parens
around && within ||' type warnings.  I'm pretty sure I have not masked
any problems here, I've committed real problem fixes seperately.
1999-05-06 18:44:42 +00:00
Peter Wemm
522c197d02 The joypart() macro had a precedence bug. Add seatbelts for UNIT() too. 1999-05-06 18:39:32 +00:00
Peter Wemm
754d670b57 Missing 'int' declaration in devsw_installed variable. 1999-05-06 18:33:48 +00:00
Peter Wemm
dfd5dee1b0 Add sufficient braces to keep egcs happy about potentially ambiguous
if/else nesting.
1999-05-06 18:13:11 +00:00
Peter Wemm
5f0d05904c Add missing comment characters from wi driver description. 1999-05-06 18:08:23 +00:00
Poul-Henning Kamp
84c55b38e4 Remove unused fields from struct buf:
b_savekva
	b_validoff
	b_validend

Reviewed by:	dillon, bde
1999-05-06 17:06:41 +00:00
Bill Paul
e566363ef1 Modify wicontrol(8) and wi(4) to allow setting the frequency of the
WaveLAN's radio modem. The default is whatever the NIC uses since NICs
sold in different countries may default to different frequencies. (The
Lose95/LoseNT software doesn't let you select the channel so it's probably
not really meant to be changed.)
1999-05-06 16:32:45 +00:00
Bill Paul
727c88e9da Tweak the Macronix driver to hopefully make it more reliable:
- Change to the same transmit scheme as the PNIC driver.
- Dynamically set the cache alignment, and set burst size the same as
  the PNIC driver in mx_init().
- Enable 'store and forward' mode by default. This is the slowest option
  and it does reduce 100Mbps performance somewhat, but it's the most
  reliable setting I can find. I'm more interested in having the driver
  work reliably than trying to squeeze the best performance out of it.
  The reason I'm doing this is that on *some* systems you may see a lot
  of transmit underruns (which I can't explain: these are *fast* test
  systems) and these errors seem to cause unusual and decidedly
  non-tulip-like behavior. In normal 10Mbps mode, performance is fine
  (you can easily saturate a 10Mbps link).

Also tweak some of the other drivers:

- Increase the size of the TX ring for the Winbond, ASIX, VIA Rhine
  and PNIC drivers.
- Set a larger value for ifq_maxlen in the ThunderLAN driver. The setting
  of TL_TX_LIST_CNT - 1 is too low (the ThunderLAN driver only allocates
  20 transmit descriptors, and I don't want to fiddle with that now
  because the ThunderLAN's descriptor structure is an oddball size
  compared to the others).
1999-05-06 15:32:52 +00:00
Nick Hibma
4ca710c5e2 Added USB HID devices major number.
Submitted by: MAEKAWA Masahide
1999-05-06 13:51:26 +00:00
Peter Wemm
442e64375a Move the proc0 init before the driver probe/attach etc since machdep.c
doesn't set curproc anymore, and certain drivers like to tsleep() during
probes, usb for example.
1999-05-06 13:42:25 +00:00
Peter Wemm
97bf178703 I'm not sure why the #ifdef SMP became #if 1 (this overrode the npx probe
and always succeeded as is required on SMP).  Anyway, reverting this
still compiles and appears ok.
1999-05-06 12:47:21 +00:00
Bruce Evans
ea2b3e3d1b Fixed profiling of elf kernels. Made high resolution profiling compile
for elf kernels (it is broken for all kernels due to lack of egcs support).

Renaming of many assembler labels is avoided by declaring by declaring
the labels that need to be visible to gprof as having type "function"
and depending on the elf version of gprof being zealous about discarding
the others.  A few type declarations are still missing, mainly for SMP.

PR:		9413
Submitted by:	Assar Westerlund <assar@sics.se> (initial parts)
1999-05-06 09:44:57 +00:00
KATO Takenori
5c32431080 Sync with sys/i386/i386/userconfig.c revision 1.138. 1999-05-06 09:15:20 +00:00
KATO Takenori
bb0992d7ab Sync with sys/i386/conf/files.i386 revision 1.237. 1999-05-06 09:13:56 +00:00
Bruce Evans
54ab20b159 Fixed bitrot in comments. 1999-05-06 03:35:44 +00:00
Bill Paul
c49713fde1 Fix some byte ordering problems; I was storing string lengths wrong,
which was causing wicontrol to crash when reading string parameters
from the WaveLAN.

Patches submitted by: Brad Karp <karp@eecs.harvard.edu>
1999-05-06 03:34:02 +00:00
Luoqi Chen
25b602e4c2 Now that each cpu has its own gdt table, we need to setup apm gdt entries in
all the tables.
1999-05-06 01:07:03 +00:00
Luoqi Chen
c300b7b6c1 Initialize dblfault_tss.tss_fs to the per-cpu private data segment selector. 1999-05-06 00:54:54 +00:00