Bill Paul [Fri, 11 May 2001 20:15:41 +0000 (20:15 +0000)]
Disable the 'stats counter overflow' interrupts since they can happen
much more often that expected and negatively impact performance when
running at 100mbps. I need to figure out if there's a better way to
handle this, but for now this shouldn't hurt anything.
Bill Paul [Fri, 11 May 2001 19:56:39 +0000 (19:56 +0000)]
Add support for gigabit ethernet cards based on the NatSemi DP83820
and DP83821 gigabit ethernet MAC chips and the NatSemi DP83861 10/100/1000
copper PHY. There are a whole bunch of very low cost cards available with
this chipset selling for $150USD or less. This includes the SMC9462TX,
D-Link DGE-500T, Asante GigaNIX 1000TA and 1000TPC, and a couple cards
from Addtron.
This chip supports TCP/IP checksum offload, VLAN tagging/insertion.
2048-bit multicast filter, jumbograms and has 8K TX and 32K RX FIFOs.
I have not done serious performance testing with this driver. I know
it works, and I want it under CVS control so I can keep tabs on it.
Note that there's no serious mutex stuff in here yet either: I need
to talk more with jhb to figure out the right way to do this. That
said, I don't think there will be any problems.
This driver should also work on the alpha. It's not turned on in
GENERIC.
Kirk McKusick [Fri, 11 May 2001 07:40:39 +0000 (07:40 +0000)]
Update the fsck command in /etc/rc to use the new background
fsck checking. Applying these changes (typically via mergemaster)
will cause your system to start running background checks on all
your soft update enabled filesystems (provided that you have
a kernel with the required functionality, e.g., one built since
the end of April). Please report any and all problems to
mckusick@mckusick.com (not mckusick@freebsd.org which I read
infrequently). See the comment above the fsck command in /etc/rc
for instructions on how to disable background checking should it
cause you too much trouble.
Several FAQs:
1) Can I reboot before the background checks are done?
Ans) Yes, when the system restarts the checks will pick up
where they left off.
2) Can a crash during checking corrupt my filesystem?
Ans) No, recovered resources are returned to the system using soft
updates which ensure that the freeing is done in a safe order.
3) How will I know if any background checks are being done?
Ans) Filesystems that are to be checked in background will be listed
as `DEFER FOR BACKGROUND CHECKING' at the usual fsck check time
during system startup.
4) What happens to the output of the background checks?
Ans) It is sent to syslog `daemon' facility log level `notice'.
5) When will this feature be available in the 4.X kernel?
Ans) Never. It is much too radical and extensive a change to be
MFC'ed. Besides, it needs many months of experience and
tuning before it is ready for widespread use.
6) What happens if a background fsck fails (i.e., fsck finds
errors that would normally require a manual fsck)?
Ans) The filesystem will be marked as needing a manual fsck.
At the next system reboot, the check will be done in
foreground and the usual actions taken (usually a failure
to go multi-user until fsck has been run by hand on the
affected filesystem).
Bruce A. Mah [Thu, 10 May 2001 23:38:32 +0000 (23:38 +0000)]
New release notes: statfs(2) and df(1) track blocks committed to being
freed by softupdates, ifconfig(8) accepts CIDR notation, rc(8) clean-out
of /var/run and /var/spool/lock, c89(1) is now a binary, pax(1)
enhancements and cpio(1)/tar(1) compatability, Ukranian language console
support.
Other: Update/make (more) consistent the list of WaveLAN devices
supported.
John Baldwin [Thu, 10 May 2001 17:45:49 +0000 (17:45 +0000)]
- Split out the support for per-CPU data from the SMP code. UP kernels
have per-CPU data and gdb on the i386 at least needs access to it.
- Clean up includes in kern_idle.c and subr_smp.c.
Bill Paul [Thu, 10 May 2001 17:17:24 +0000 (17:17 +0000)]
Try to read the station address twice during the probe. I've seen
a LinkSys card here in the office where reading the station address
fails the first time, but works find afterwards. Without this, the
probe fails. I don't think this will negatively impact any existing
cards, but I want to confirm this before MFC'ing.
John Baldwin [Thu, 10 May 2001 17:03:03 +0000 (17:03 +0000)]
- Use sched_lock and critical regions to ensure that LDT updates are thread
safe from preemption and concurrent access to the LDT.
- Move the prototype for i386_extend_pcb() to <machine/pcb_ext.h>.
Matt Jacob [Thu, 10 May 2001 07:08:03 +0000 (07:08 +0000)]
The new order of things is that dwlpxN is now called pcibN- so hack around
*that* whilst we ponder the best way to decide how to register dwlpx interrupts
with TLSB.
Warner Losh [Thu, 10 May 2001 06:55:39 +0000 (06:55 +0000)]
Fix the panics for real this time. When something can't be allocated,
we need to delete the info from the list as well as zero out the res
pointer we saved in the code.
Also made a few style(9) changes while I was at it. Don't use if
(ptr) or if (!ptr), but compare against NULL. Compare against NULL
rather than 0. Don't have useless blocks.
There are likely other problems as well, but at least the wi based
wireless card with memory listed in its cis doesn't panic the system
when the card is inserted.
John Baldwin [Wed, 9 May 2001 19:37:25 +0000 (19:37 +0000)]
Add in commented out entries for NEWCARD so that they are at least
documented. They cannot be turned on by default due to conflicting
symbols at link time between OLDCARD and NEWCARD.
Bill Paul [Wed, 9 May 2001 18:22:42 +0000 (18:22 +0000)]
The sk driver developed a bug when the multicast code was changed to
use TAILQ macros. The sk_attach_xmac() routine calls sk_init_xmac()
before doing the transceiver probe, but *before* ether_ifattach()
is called. This causes sk_init_xmac() to call sk_setmulti(), which
tries to do a TAILQ_FOREACH(), which it can't do because ether_ifattach()
hasn't done a TAILQ_INIT() yet. This causes a NULL pointer dereference
and panic in sk_setmulti() at driver load/initialization time.
Fixed by calling ether_ifattach() before the MII probe.
The code in RELENG_4 still uses the old way of enumerating the
multicast list and doesn't have this problem. Yet.
Brian S. Dean [Wed, 9 May 2001 15:13:51 +0000 (15:13 +0000)]
* Simplify the population of the /etc memory filesystem. To avoid
the null mount, we currently create a temporary mfs on /tmp, copy
/etc to /tmp, then mount /etc as mfs and copy everything back from
/tmp, then delete the /tmp mfs.
The patch eliminates the temporary /tmp mfs and the subsequent
copying and simply populates the /etc mfs by copying from
/conf/default/etc. This requires that /conf/default/etc contain a
complete copy of all the /etc stuff instead of just overrides. I
don't think that is too much of an extra step in setting up a
diskless environment.
* Provide the ability to make /tmp a memory filesystem independent
of /var. This removes the requirement that /tmp be a symlink to
/var/tmp and this makes the diskless code work with the default
filesystem layout. If a seperate /tmp memory filesystem is
created, the 'tmpsize' environment variable is used to determine
its size (default to 10 Meg).
* Reduce diffs between the -current and -stable versions of these
files to a bare minimum. Only the definition of the shell
function 'mount_md' is different.
Bruce Evans [Wed, 9 May 2001 14:30:49 +0000 (14:30 +0000)]
Fixed world breakage in previous commit. -lpam must never be used
directly (except in the definition of MINUSLPAM in bsd.libnames.mk)
since it doesn't give all the libraries necessary for static linkage.
Bruce Evans [Wed, 9 May 2001 14:23:54 +0000 (14:23 +0000)]
Fixed world breakage in previous commit. -lpam must never be used
directly (except in the definition of MINUSLPAM in bsd.libnames.mk)
since it doesn't give all the lbraries necessary for static linkage.
Fixed new and old bugs in DPADD. ${LIBPAM} was missing, and the
library order was different from that in LDADD so `make checkdpadd'
reported a non-bug.
Kris Kennaway [Wed, 9 May 2001 08:37:18 +0000 (08:37 +0000)]
Patches from OpenBSD:
- check the msg.tsp_type value prior to using it as an
index into char *tsptype[]
- use strlcpy's instead of strcpy's
- & handle short packets properly.
Submitted by: "Andrew R. Reiter" <arr@watson.org>
Obtained from: OpenBSD
Fix some of the handling in the pam module, don't unregister things
that were never registered. At the same time handle a failure from
pam_setcreds with a bit more paranioa than the previous fix.
Sync a bit with the "Portable OpenSSH" work to make comparisons a easier.
Duncan Barclay [Tue, 8 May 2001 22:51:05 +0000 (22:51 +0000)]
Add a sysctl pair for the pcic memory allocation range
machdep.pccard.pcic_mem_start
machdep.pccard.pcic_mem_end
and default the range to IOM_BEGIN/IOM_END.
This may prove useful to if_ray users (and others) on more modern
hardware that maps BIOS stuff into 0xd000-0xdffff.
Here comes the forgotten C source, oopsy.
Turned the shell script into a binary fixing several minor buglets.
Mention _POSIX_SOURCE feature test macro in man page.
PR: bin/19337
Submitted by: schweikh
Reviewed by: joerg, bde
MFC after: 2 weeks
Turned the shell script into a binary fixing several minor buglets.
Mention _POSIX_SOURCE feature test macro in man page.
PR: bin/19337
Submitted by: myself way back when I was a nobody :-) (schweikh)
Reviewed by: joerg, bde
MFC after: 2 weeks
Remove an 'optimization' I hope to never see again.
The pipe code could not handle running out of kva, it would panic
if that happened. Instead return ENFILE to the application which
is an acceptable error return from pipe(2).
There was some slightly tricky things that needed to be worked on,
namely that the pipe code can 'realloc' the size of the buffer if
it detects that the pipe could use a bit more room. However if it
failed the reallocation it could not cope and would panic. Fix
this by attempting to grow the pipe while holding onto our old
resources. If all goes well free the old resources and use the
new ones, otherwise continue to use the smaller buffer already
allocated.
While I'm here add a few blank lines for style(9) and remove
'register'.
Brian Somers [Tue, 8 May 2001 07:55:33 +0000 (07:55 +0000)]
Remove all the mutex stuff - suggested by jhb
Tidy up includes, credit Slawa Olhovchenkov, John Prince and Eric Hernes
for their efforts and add a couple of missing parenthesis around return
expressions.
Kirk McKusick [Tue, 8 May 2001 07:42:20 +0000 (07:42 +0000)]
When running with soft updates, track the number of blocks and files
that are committed to being freed and reflect these blocks in the
counts returned by statfs (and thus also by the `df' command). This
change allows programs such as those that do news expiration to
know when to stop if they are trying to create a certain percentage
of free space. Note that this change does not solve the much harder
problem of making this to-be-freed space available to applications
that want it (thus on a nearly full filesystem, you may still
encounter out-of-space conditions even though the free space will
show up eventually). Hopefully this harder problem will be the
subject of a future enhancement.
Kirk McKusick [Tue, 8 May 2001 07:29:03 +0000 (07:29 +0000)]
Several fixes for units errors:
1) Do not assume that the superblock will be of size fs->fs_bsize.
This fixes a panic when taking a snapshot on a filesystem with
a block size bigger than 8K.
2) Properly calculate the number of fragments that follow the
superblock summary information. This fixes a bug with inconsistent
snapshots.
3) When cleaning up a snapshot that is about to be removed, properly
calculate the number of blocks that need to be checked. This fixes
a bug that created partially allocated inodes.
4) When moving blocks from a snapshot that is about to be removed
to another snapshot, properly account for the reduced number of
blocks in the snapshot from which they are taken. This fixes a
bug in which the number of blocks released from a snapshot did not
match the number that it claimed to have.
Kirk McKusick [Tue, 8 May 2001 07:13:00 +0000 (07:13 +0000)]
When syncing out snapshot metadata, we must temporarily allow recursive
buffer locking so as to avoid locking against ourselves if we need to
write filesystem metadata.
Kris Kennaway [Tue, 8 May 2001 06:58:25 +0000 (06:58 +0000)]
GC some dead code relating to running df on unmounted block devices,
and remove the setgid operator bit from the installed binary: if you want
to view free disk space on an unmounted device, you should have read
permissions to access it.