]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
18 years agoBefore dereferencing intotw() when INP_TIMEWAIT, check for inp_ppcb being
rwatson [Tue, 4 Apr 2006 12:26:07 +0000 (12:26 +0000)]
Before dereferencing intotw() when INP_TIMEWAIT, check for inp_ppcb being
NULL.  We currently do allow this to happen, but may want to remove that
possibility in the future.  This case can occur when a socket is left
open after TCP wraps up, and the timewait state is recycled.  This will
be cleaned up in the future.

Found by: Kazuaki Oda <kaakun at highway dot ne dot jp>
MFC after: 3 months

18 years ago- Sync rc.subr with NetBSD.
flz [Tue, 4 Apr 2006 10:52:15 +0000 (10:52 +0000)]
- Sync rc.subr with NetBSD.
- Merge some documentation bits.

Reviewed by: brooks, simon (doc)
Approved by: cperciva (mentor)
Obtained from: NetBSD
MFC after: 3 days

18 years agoNote that all of the birthtime related primaries are non-standard.
ceri [Tue, 4 Apr 2006 10:20:16 +0000 (10:20 +0000)]
Note that all of the birthtime related primaries are non-standard.

18 years agoRemove unused variables s and error in key_detach. The previous
dd [Tue, 4 Apr 2006 10:11:15 +0000 (10:11 +0000)]
Remove unused variables s and error in key_detach. The previous
revision removed their usage but did not remove the declaration. This
caused a warning in my build, which was fatal with -Werror.

18 years ago - VFS_LOCK_GIANT when recycling a vnode via getnewvnode. We may be
jeff [Tue, 4 Apr 2006 06:46:10 +0000 (06:46 +0000)]
 - VFS_LOCK_GIANT when recycling a vnode via getnewvnode.  We may be
   recycling for an unrelated filesystem.  I really don't like potentially
   acquiring giant in the context of a giantless filesystem but there
   are reasonable objections to removing the recycling from this path.

Sponsored by: Isilon Systems, Inc.

18 years ago - Properly check against B_DELWRI and B_NEEDSGIANT. This check was
jeff [Tue, 4 Apr 2006 06:44:21 +0000 (06:44 +0000)]
 - Properly check against B_DELWRI and B_NEEDSGIANT.  This check was
   incorrectly written and caused some !NEEDSGIANT buffers to be put in
   the NEEDSGIANT queue.

Sponsored by: Isilon Systems, Inc.

18 years agoThe MFI driver appears first in FreeBSD 6.1
scottl [Tue, 4 Apr 2006 04:11:55 +0000 (04:11 +0000)]
The MFI driver appears first in FreeBSD 6.1

18 years agoRefactor per-run bitmap manipulation functions so that bitmap offsets only
jasone [Tue, 4 Apr 2006 03:51:47 +0000 (03:51 +0000)]
Refactor per-run bitmap manipulation functions so that bitmap offsets only
have to be calculated once per allocator operation.

Make nil const.

Update various comments.

Remove/avoid division where possible.

For the one division operation that remains in the critical path, add a
switch statement that has a case for each small size class, and do division
with a constant divisor in each case.  This allows the compiler to generate
optimized code that does not use hardware division [1].

Obtained from: peter [1]

18 years agoRemove declaration of _thr_initial from MD header file, it is no longer
davidxu [Tue, 4 Apr 2006 03:35:26 +0000 (03:35 +0000)]
Remove declaration of _thr_initial from MD header file, it is no longer
needed.

18 years agoSimplify _get_curthread() and _tcb_ctor because libc and rtld now
davidxu [Tue, 4 Apr 2006 03:26:06 +0000 (03:26 +0000)]
Simplify _get_curthread() and _tcb_ctor because libc and rtld now
already allocate thread pointer space in tls block for initial thread.
Only i386 and amd64 have been done, others still have to be tested.

18 years agoRemove unintended DEBUG flag setting.
gnn [Tue, 4 Apr 2006 03:12:21 +0000 (03:12 +0000)]
Remove unintended DEBUG flag setting.

18 years agoSync with i386: Map exceptions to signals in gdb_cpu_signal() so
marcel [Tue, 4 Apr 2006 03:00:20 +0000 (03:00 +0000)]
Sync with i386: Map exceptions to signals in gdb_cpu_signal() so
that kgdb(1) gets a SIGTRAP when it needs to.

Pointed out by: grehan@

18 years agoWARNS level 4 cleanup.
davidxu [Tue, 4 Apr 2006 02:57:49 +0000 (02:57 +0000)]
WARNS level 4 cleanup.

18 years agoWARNS level 4 cleanup, still has work to do.
davidxu [Tue, 4 Apr 2006 02:57:09 +0000 (02:57 +0000)]
WARNS level 4 cleanup, still has work to do.

18 years agoThe PC is register 16, not 18.
marcel [Tue, 4 Apr 2006 02:44:51 +0000 (02:44 +0000)]
The PC is register 16, not 18.

Pointed out by: grehan@

18 years agoAdd support for Intel cpu model's 5 & 6.
ps [Tue, 4 Apr 2006 02:36:04 +0000 (02:36 +0000)]
Add support for Intel cpu model's 5 & 6.

Approved by: jkoshy

18 years agoFreshen a comment.
jkoshy [Tue, 4 Apr 2006 02:26:45 +0000 (02:26 +0000)]
Freshen a comment.

Reviewed by: jhb

18 years agoFix an off-by-one error in the port range detection. Cleanup some old
njl [Tue, 4 Apr 2006 02:22:38 +0000 (02:22 +0000)]
Fix an off-by-one error in the port range detection.  Cleanup some old
whitespace.

18 years agoIn z8530_divisor() return 0 if the calculated divisor is less than 0.
marcel [Tue, 4 Apr 2006 01:16:16 +0000 (01:16 +0000)]
In z8530_divisor() return 0 if the calculated divisor is less than 0.
This happens when the baudrate is too high for the given RCLK.

18 years agoIncrement kdb_active after we stopped the other CPUs and decrement
marcel [Tue, 4 Apr 2006 00:40:20 +0000 (00:40 +0000)]
Increment kdb_active after we stopped the other CPUs and decrement
kdb_active before we restart them. This avoids false positives on
restarted CPUs when they test for kdb_active while kdb_trap() is
still finishing up.

18 years agoImprove handling of IPI_STOP:
marcel [Mon, 3 Apr 2006 23:56:40 +0000 (23:56 +0000)]
Improve handling of IPI_STOP:
o  use atomic operations to fiddle with stopped_cpus and started_cpus.
o  disable interrupts while we're waiting to be started.
o  remove logic relating to cpustop_restartfunc as it's not used.

18 years agoEliminate HAVE_STOPPEDPCBS. On ia64 the PCPU holds a pointer to the
marcel [Mon, 3 Apr 2006 22:51:47 +0000 (22:51 +0000)]
Eliminate HAVE_STOPPEDPCBS. On ia64 the PCPU holds a pointer to the
PCB in which the context of stopped CPUs is stored. To access this
PCB from KDB, we introduce a new define, called KDB_STOPPEDPCB. The
definition, when present, lives in <machine/kdb.h> and abstracts
where MD code saves the context. Define KDB_STOPPEDPCB on i386,
amd64, alpha and sparc64 in accordance to previous code.

18 years agoEliminate softdep_flush() livelock by accounting for number of worklist items
tegge [Mon, 3 Apr 2006 22:23:23 +0000 (22:23 +0000)]
Eliminate softdep_flush() livelock by accounting for number of worklist items
marked as being in progress.

18 years agoShrink the amd64 pv entry from 48 bytes to about 24 bytes. On a machine
peter [Mon, 3 Apr 2006 21:36:01 +0000 (21:36 +0000)]
Shrink the amd64 pv entry from 48 bytes to about 24 bytes.  On a machine
with large mmap files mapped into many processes, this saves hundreds of
megabytes of ram.
pv entries were individually allocated and had two tailq entries and two
pointers (or addresses).  Each pv entry was linked to a vm_page_t and
a process's address space (pmap).  It had the virtual address and a
pointer to the pmap.
This change replaces the individual allocation with a per-process
allocation system.  A page ("pv chunk") is allocated and this provides
168 pv entries for that process.  We can now eliminate one of the 16 byte
tailq entries because we can simply iterate through the pv chunks to find
all the pv entries for a process.  We can eliminate one of the 8 byte
pointers because the location of the pv entry implies the containing
pv chunk, which has the pointer.  After overheads from the pv chunk
bitmap and tailq linkage, this works out that each pv entry has an
effective size of 24.38 bytes.

Future work still required, and other problems:
* when running low on pv entries or system ram, we may need to defrag
  the chunk pages and free any spares.  The stats (vm.pmap.*) show that
  this doesn't seem to be that much of a problem, but it can be done if
  needed.
* running low on pv entries is now a much bigger problem.  The old
  get_pv_entry() routine just needed to reclaim one other pv entry.
  Now, since they are per-process, we can only use pv entries that are
  assigned to our current process, or by stealing an entire page worth
  from another process.  Under normal circumstances, the pmap_collect()
  code should be able to dislodge some pv entries from the current
  process.  But if needed, it can still reclaim entire pv chunk pages
  from other processes.
* This should port to i386 really easily, except there it would reduce
  pv entries from 24 bytes to about 12 bytes.

(I have integrated Alan's recent changes.)

18 years ago- s,tramoline,trampoline, in a comment.
marius [Mon, 3 Apr 2006 21:27:01 +0000 (21:27 +0000)]
- s,tramoline,trampoline, in a comment.
- Use FBSDID in trap.c
- Make the global trap_sig[] static as it's not used outside of trap.c.
- In sendsig() remove an unused variable.
- In trap() sync with the other archs; for fast data access MMU miss and
  data access protection traps set ksi_addr to the SFAR reg which contains
  the faulting address and otherwise to the TPC reg. Generally the TCP reg
  contains the address of the instruction that caused the exception, except
  for fast instruction access traps (and some others; more refinement may
  be needed here) it also contains the faulting address.
  Previously sendsig() always set si_addr to the SFAR reg which is wrong
  for most traps.
- In sendsig() add support for FreeBSD old-style signals.

These changes are inspired by kmacy's sun4v changes and allow libsigsegv
to build on FreeBSD/sparc64, but it doesn't pass all checks and tests it
actually should, yet.

MFC after: 5 days

18 years agoUpdate pmap_remove_pages(9) doc.
peter [Mon, 3 Apr 2006 21:17:36 +0000 (21:17 +0000)]
Update pmap_remove_pages(9) doc.

18 years agoRemove the unused sva and eva arguments from pmap_remove_pages().
peter [Mon, 3 Apr 2006 21:16:10 +0000 (21:16 +0000)]
Remove the unused sva and eva arguments from pmap_remove_pages().

18 years agoIn kdb_trap(), change the type of the local variable 'intr' from int
marcel [Mon, 3 Apr 2006 20:55:52 +0000 (20:55 +0000)]
In kdb_trap(), change the type of the local variable 'intr' from int
to register_t, as intr_disable() returns the latter and register_t
may be wider than int.

Pointed out by: marius@

18 years agoBump .Dd for the birthtime options.
ceri [Mon, 3 Apr 2006 20:53:34 +0000 (20:53 +0000)]
Bump .Dd for the birthtime options.

18 years agoAdd -Btime, -Bnewer, -Bmin, -newerB[Bacmt], -newer[acmt]B options to
ceri [Mon, 3 Apr 2006 20:36:37 +0000 (20:36 +0000)]
Add -Btime, -Bnewer, -Bmin, -newerB[Bacmt], -newer[acmt]B options to
work with the st_birthtime field of struct stat.

'B' has been chosen to match the format specifier from stat(1).

Approved by: jhb
MFC after: 2 weeks

18 years agoMilosz (sorry for not using the right 'l', it will not display corretly
netchild [Mon, 3 Apr 2006 18:42:44 +0000 (18:42 +0000)]
Milosz (sorry for not using the right 'l', it will not display corretly
in the commit log) submitted support for some NO_* knobs for delete-old*
and check-old. I converted it to the new WITHOUT_* knobs (more correctly:
MK_*) and added some dummy ones so that people can see what's missing.

Volunteers can have a look at http://phk.freebsd.dk/misc/build_options/
for a list of files.

The location looks a little bit odd to me, but I don't care about the
color of this bikeshed and follow the suggestion of our build
infrastructure guru to place it "somewhere under src/tools/ please". [1]
The build/mk/ directory looks more sane to me than the other ones there.

Submitted by: milosz.galazka@gmail.com
Suggested by: ru [1]

18 years agoo add opt_ath.h enable tweaking various config parameters for the driver
sam [Mon, 3 Apr 2006 18:14:02 +0000 (18:14 +0000)]
o add opt_ath.h enable tweaking various config parameters for the driver
  without modifying the source code
o default debug msgs and diag support to off

MFC after: 3 days

18 years agoReplace critical_enter() and critical_exit() in kdb_trap() with
marcel [Mon, 3 Apr 2006 17:48:09 +0000 (17:48 +0000)]
Replace critical_enter() and critical_exit() in kdb_trap() with
intr_disable() and intr_restore() resp. Previously, critical
regions would have interrupts disabled, but that was changed.
Consequently, the debugger could run with interrupts enabled.
This could cause problems for the low-level console code where
received characters would trigger an interrupt that causes
the interrupt handler to read the character instead of the
cngetc() function.

18 years agoAdd device ID for nForce 410 MCP audio controller.
ariff [Mon, 3 Apr 2006 17:37:27 +0000 (17:37 +0000)]
Add device ID for nForce 410 MCP audio controller.

PR: kern/95257
Submitted by: cenix <cenixxx at gmail dot com>
MFC after: 3 days

18 years agoIn TCP notify routines, check inpcb for INP_TIMEWAIT and INP_DROPPED.
rwatson [Mon, 3 Apr 2006 14:07:50 +0000 (14:07 +0000)]
In TCP notify routines, check inpcb for INP_TIMEWAIT and INP_DROPPED.
The INP_DROPPED check replaces the current NULL checks; the INP_TIMEWAIT
checks appear to have always been required, but not been there, which
is/was a bug.  This avoids unconditionally casting of in_ppcb to a tcpcb,
when it may be a twtcb, which may have resulted in obscure ICMP-related
panics in earlier releases.

MFC after: 3 months

18 years agoChange inp_ppcb from caddr_t to void *, fix/remove associated related
rwatson [Mon, 3 Apr 2006 13:33:55 +0000 (13:33 +0000)]
Change inp_ppcb from caddr_t to void *, fix/remove associated related
casts.

Consistently use intotw() to cast inp_ppcb pointers to struct tcptw *
pointers.

Consistently use intotcpcb() to cast inp_ppcb pointers to struct tcpcb *
pointers.

Don't assign tp to the results to intotcpcb() during variable declation
at the top of functions, as that is before the asserts relating to
locking have been performed.  Do this later in the function after
appropriate assertions have run to allow that operation to be conisdered
safe.

MFC after: 3 months

18 years agoStyle tweaks: convert to ANSI from K&R function prototypes.
rwatson [Mon, 3 Apr 2006 12:59:27 +0000 (12:59 +0000)]
Style tweaks: convert to ANSI from K&R function prototypes.

MFC after: 3 months

18 years agoUpdate comment on tcp_close() for new world order.
rwatson [Mon, 3 Apr 2006 12:52:13 +0000 (12:52 +0000)]
Update comment on tcp_close() for new world order.

MFC after: 3 months

18 years agoClarify comment on handling of non-timewait TCP states in
rwatson [Mon, 3 Apr 2006 12:43:56 +0000 (12:43 +0000)]
Clarify comment on handling of non-timewait TCP states in
tcp_usr_detach().

MFC after: 3 months

18 years agoAdd a second pass to the close-before-accept test using a call to the
rwatson [Mon, 3 Apr 2006 11:57:41 +0000 (11:57 +0000)]
Add a second pass to the close-before-accept test using a call to the
tcp drop sysctl.  This should exercise the ECONNABORTED accept case.

18 years agoFix up locking surrounding tcp_drop sysctl: in the new world order, we
rwatson [Mon, 3 Apr 2006 11:57:12 +0000 (11:57 +0000)]
Fix up locking surrounding tcp_drop sysctl: in the new world order, we
don't free inpcbs until after the socket is closed, so we always need
to unlock an inpcb after calling tcp_drop() on it.

MFC after: 3 months

18 years agoAdd regression test for tcpdrop sysctl.
rwatson [Mon, 3 Apr 2006 11:34:36 +0000 (11:34 +0000)]
Add regression test for tcpdrop sysctl.

18 years agoAdd a regression test to exercise the case where accept() is called and
rwatson [Mon, 3 Apr 2006 10:08:35 +0000 (10:08 +0000)]
Add a regression test to exercise the case where accept() is called and
the next waiting socket has had a close on the remote endpoint already.

18 years agoAfter checking for SO_ISDISCONNECTED in tcp_usr_accept(), return
rwatson [Mon, 3 Apr 2006 09:52:55 +0000 (09:52 +0000)]
After checking for SO_ISDISCONNECTED in tcp_usr_accept(), return
immediately rather than jumping to the normal output handling, which
assumes we've pulled out the inpcb, which hasn't happened at this
point (and isn't necessary).

Return ECONNABORTED instead of EINVAL when the inpcb has entered
INP_TIMEWAIT or INP_DROPPED, as this is the documented error value.

This may correct the panic seen by Ganbold.

MFC after: 1 month
Reported by: Ganbold <ganbold at micom dot mng dot net>

18 years agoCorrect incorrect assertion in div_bind(): inp must not be NULL here.
rwatson [Mon, 3 Apr 2006 09:01:17 +0000 (09:01 +0000)]
Correct incorrect assertion in div_bind(): inp must not be NULL here.

Reported by: tegge
MFC after: 3 months

18 years agoRemove unused variable 'error'. Forgotten in previous commit.
marcel [Sun, 2 Apr 2006 21:58:09 +0000 (21:58 +0000)]
Remove unused variable 'error'. Forgotten in previous commit.

18 years agoDon't claim a SAB82532. We have scc(4) for that.
marcel [Sun, 2 Apr 2006 21:50:45 +0000 (21:50 +0000)]
Don't claim a SAB82532. We have scc(4) for that.

18 years agoEliminate the sc_hasfifo flag from the softc. It was only used by
marcel [Sun, 2 Apr 2006 21:45:54 +0000 (21:45 +0000)]
Eliminate the sc_hasfifo flag from the softc. It was only used by
the NS8250 class driver. The UART has FIFOs if sc_rxfifosz>1, so
test for that instead.
While here properly initialize sc_rxfifosz and sc_txfifosz in the
case the UART doesn't have FIFOs.

18 years agoAdd scc(4).
marcel [Sun, 2 Apr 2006 21:00:17 +0000 (21:00 +0000)]
Add scc(4).

18 years agoRemove uart(4) as it's supported on all architectures and that is the
marcel [Sun, 2 Apr 2006 20:59:40 +0000 (20:59 +0000)]
Remove uart(4) as it's supported on all architectures and that is the
default.

18 years agoAdd test cases that check utility syntax errors and redirection errors. For
stefanf [Sun, 2 Apr 2006 19:02:49 +0000 (19:02 +0000)]
Add test cases that check utility syntax errors and redirection errors.  For
special built-in utilities they must terminate the shell, for other
utilities only a error message shall be written.  We currently fail both
tests.

18 years agoIssue an error when . (dot) is invoked without a filename. The synopsis
stefanf [Sun, 2 Apr 2006 18:51:32 +0000 (18:51 +0000)]
Issue an error when . (dot) is invoked without a filename.  The synopsis
is just ". file" according to POSIX, however many other shells allow
arguments to be passed after the file.  For compatibility (we even use that
feature in buildworld) additional arguments are not considered to be an
error, even though this shell does not do anything with the arguments at all.

18 years agoUse -s to flag POSIX's "special built-in" utilities in builtins.def. Add a
stefanf [Sun, 2 Apr 2006 18:43:33 +0000 (18:43 +0000)]
Use -s to flag POSIX's "special built-in" utilities in builtins.def.  Add a
new member to struct builtincmd and set it to 1 if -s was specified.  This
is done because there are cases where special builtins must be treated
differently from other builtins.

Obtained from: NetBSD (builtins.def part)

18 years agoFix a typo: s/&man.rfcomm.pppd.8;/&man.rfcomm.sppd.1;/.
hrs [Sun, 2 Apr 2006 18:26:48 +0000 (18:26 +0000)]
Fix a typo: s/&man.rfcomm.pppd.8;/&man.rfcomm.sppd.1;/.

18 years agoDuring reformulation of tcp_usr_detach(), the call to initiate TCP
rwatson [Sun, 2 Apr 2006 16:42:51 +0000 (16:42 +0000)]
During reformulation of tcp_usr_detach(), the call to initiate TCP
disconnect for fully connected sockets was dropped, meaning that if
the socket was closed while the connection was alive, it would be
leaked.  Structure tcp_usr_detach() so that there are two clear
parts: initiating disconnect, and reclaiming state, and reintroduce
the tcp_disconnect() call in the first part.

MFC after: 3 months

18 years agoNew release notes:
hrs [Sun, 2 Apr 2006 14:53:28 +0000 (14:53 +0000)]
New release notes:
hwpmc(4) and pmcstat(8) profiling support for dynamically-loaded
objects, and pmcstat(8) network logging support added[1].

Fix incorrect entries:
gmirror/graid3 uses parallel I/O request for synchronization now.
The parallel I/O request itself has been already supported[2].

Spotted by: jkoshy[1] and pjd[2]

18 years agoFix typos and the following incorrect entries:
hrs [Sun, 2 Apr 2006 14:25:12 +0000 (14:25 +0000)]
Fix typos and the following incorrect entries:
kbdmux(4) GENERIC support currently in amd64 and i386 only[1],
uart(4) GENERIC support currently not in pc98[1],
speaker(4) on amd64 entry needs arch="amd64"[2],
hptmv(4) update entry needs arch="amd64,i386"[2], and
OpenSSH 4.3p1 import has not been merged yet[2].

Spotted by: nyan[1] and delphij[2]

18 years agoMFen 1.903 -> 1.907
delphij [Sun, 2 Apr 2006 14:14:37 +0000 (14:14 +0000)]
MFen 1.903 -> 1.907

Obtained from: FreeBSD Simplified Chinese Project

18 years ago- Teach pmcstat(8) to log over the network; the -O option now
jkoshy [Sun, 2 Apr 2006 12:52:16 +0000 (12:52 +0000)]
- Teach pmcstat(8) to log over the network; the -O option now
  takes a host:port specification.
- Update the manual page and add an example showing how log
  over the network using pmcstat(8) and nc(1).  Document the
  current inability to process logs in cross-platform manner.
- Have pmcstat_open_log() call err(3) directly in case
  of an error; this simplifies error handling in its caller.

MFC after: 1 week

18 years agoWhen running the second part of the test, kill off the server process from
rwatson [Sun, 2 Apr 2006 11:09:37 +0000 (11:09 +0000)]
When running the second part of the test, kill off the server process from
the first part before starting, or the TCP port we want to bind may be in
use still.  Sleep for a short period between tests.

Use SIGTERM instead of SIGKILL.

18 years agoPass the right pid into the parent and child tasks so that when a test
rwatson [Sun, 2 Apr 2006 11:03:05 +0000 (11:03 +0000)]
Pass the right pid into the parent and child tasks so that when a test
fails, we kill the right partner process.

18 years agoAdd makefile for tcpsocktimewait missed in previous commit.
rwatson [Sun, 2 Apr 2006 10:50:46 +0000 (10:50 +0000)]
Add makefile for tcpsocktimewait missed in previous commit.

18 years agoUpdate release notes (round 2, until Mar 2006):
hrs [Sun, 2 Apr 2006 07:56:48 +0000 (07:56 +0000)]
Update release notes (round 2, until Mar 2006):

file descriptor handling bug fixed,
support for copying console messages to remote gdb(1),
kbdmux(4) now in GENERIC by default,
scc(4) for generic serial devices added,
net.inet.ip.portrange.reserved[high|low] for IPv6,
ata(4) USB mass storage class support,
gmirror kernel crash dump support,
gmirror and graid3 parallel I/O request support,
mfi(4) for LSI MegaRAID SAS controller family added,
getfacl(1) -q option added,
gvinum(8) resetconfig sub-command support,
libarchive(3) tp format support removed,
libarchive(3) POSIX.1e EA support added,
libc symbol map added,
libm symbol map added,
ls(1) -U option added,
mdconfig(8) XML device listing support,
mdconfig(8) -u option now supports comma-separated multiple devices,
BIND9 DNS resolver library imported,
strtonum(3) from OpenBSD,
rc.d/ike removed,
GNU Readline library updated to 5.1,
OpenSSH updated to 4.3p1,
hostapd updated to 0.4.8,
WPA supplicant updated to 0.4.8,
zlib updated to 1.2.3,
pkg_add(1) -F option added,
portsnap(1) HTTP_PROXY_AUTH handling bug fixed,
"make showconfig" in src/Makefile added, and
/etc/src.conf added.

18 years agoIf you see a broken symlink, don't try to follow it,
kientzle [Sun, 2 Apr 2006 07:13:11 +0000 (07:13 +0000)]
If you see a broken symlink, don't try to follow it,
just archive it as a symlink, even if -h was specified.

Thanks to: Jin Guojun
PR: bin/95175
MFC After: 1 week

18 years agoIntroduce pmap_try_insert_pv_entry(), a function that conditionally creates
alc [Sun, 2 Apr 2006 05:45:05 +0000 (05:45 +0000)]
Introduce pmap_try_insert_pv_entry(), a function that conditionally creates
a pv entry if the number of entries is below the high water mark for pv
entries.

Use pmap_try_insert_pv_entry() in pmap_copy() instead of
pmap_insert_entry().  This avoids possible recursion on a pmap lock in
get_pv_entry().

Eliminate the explicit low-memory checks in pmap_copy().  The check that
the number of pv entries was below the high water mark was largely
ineffective because it was located in the outer loop rather than the
inner loop where pv entries were allocated.  Instead of checking, we
attempt the allocation and handle the failure.

Reviewed by: tegge
Reported by: kris
MFC after: 5 days

18 years agorick says:
cel [Sun, 2 Apr 2006 04:24:57 +0000 (04:24 +0000)]
rick says:

The following bug was just identified in OpenBSD and it looks like the same
bug exists in the other BSDen NFS servers.

A Linux client (don't know which version, but you can look at
http://bugzilla.kernel.org/show_bug.cgi?id=6256)
does a Setattr of mtime to the server's time, where the file is mode 0664 and
the client user has group access (ie. caller is not the file owner).

The BSD servers fail the Setattr with EPERM, since the VA_UTIMES_NULL flag
isn't set before doing the VOP_SETATTR.

It seems to me that this should be allowed, since it is allowed for a local
utimes(2). If so, the fix is to set VA_UTIMES_NULL for the
"set-time-to-server-time" cases of setting atime and/or mtime.

Submitted by: rick@snowhite.cis.uoguelph.ca
Reviewed by: cel
Approved by: silby
MFC after: 1 week

18 years agoAdd a short regression test that triggers a TCP socket to enter time wait
rwatson [Sun, 2 Apr 2006 00:07:38 +0000 (00:07 +0000)]
Add a short regression test that triggers a TCP socket to enter time wait
while the socket is still open; one variant closes the socket while in
time wait, and a second lets time wait expire while the socket is open.

18 years agoProperly handle an edge case previously not handled correctly: a
rwatson [Sat, 1 Apr 2006 23:53:25 +0000 (23:53 +0000)]
Properly handle an edge case previously not handled correctly: a
socket can have a tcp connection that has entered time wait
attached to it, in the event that shutdown() is called on the
socket and the FINs properly exchange before close().  In this
case we don't detach or free the inpcb, just leave the tcptw
detached and freed, but we must release the inpcb lock (which we
didn't previously).

MFC after: 3 months

18 years agoSaying that asr(4) has a maintainer is like saying that a politician has
scottl [Sat, 1 Apr 2006 21:19:15 +0000 (21:19 +0000)]
Saying that asr(4) has a maintainer is like saying that a politician has
integrity.

18 years agoMassive update of the -HEAD release notes (round 1, until Feb 2006):
hrs [Sat, 1 Apr 2006 20:55:21 +0000 (20:55 +0000)]
Massive update of the -HEAD release notes (round 1, until Feb 2006):

acpi(4) HPET time counter support,
acpi_ibm(4) fan control support,
ddb(4) show lock,
ddb(4) show sleepq,
firmware(9) added,
random(4) MPSAFE,
new sysctl kern.sigqueue.queue_sigchild,
brandinfo BI_CAN_EXEC_DYN flag,
new sysctl kern.forcesigexit,
RedZone, a buffer corruption protection for kernel's malloc(9),
security.mac.biba.interfaces_equal for mac_biba,
POSIX_TIMERS support updated to 200112L,
initial support for POSIX message queue,
Xbox support,
DEFAULTS kernel configuration files for each arch,
cardbus(4) /dev/cardbus%d.cis device node added,
ce(4) for Cronyx Tau-PCI/32 added,
ipmi(4), OpenIPMI (Intelligent Platform Management Interface)
driver added,
kbdmux(4) integrated into syscons(4) and kbd,
uart(4) now in GENERIC kernel,
uart(4) LOM and RSC support,
snd_atiixp(4) added and suspend/resume support,
snd_solo(4) MPSAFE,
speaker(4) amd64 support,
uaudio(4) 24/32 bit audio support,
ath(4) updated to version 0.9.16.16,
bge(4) Jumbo frame support, big-endian arch support, MPSAFE,
em(4) updated to version 3.2.18, big-endian arch support,
performance improvement, suspend/resume support,
iwi(4) big-endian arch support,
le(4) for AMD Am7900 LANCE added,
myri10ge(4) for Myricom Myri10GE adapter added,
nve(4) updated to version 1.0-0310,
ti(4) big-endian arch support,
ufoma(4) for FOMA 3G mobile phone in Japan added,
vgapci(4) stub driver added,
arp(8) retransmission algorithm revised,
new sysctl net.link.ether.inet.log_arp_permanent_modify,
support for -i <if> with -d -a,
an experimental BPF Just-In-Time compiler added,
if_bridge(4) span ports support added,
if_bridge(4) RFC 3378 EtherIP support,
ipfw(4) now supports action argument substitution from table lookup,
ng_bpf(4) BPF Just-In-Time compiler support,
bug related to NFS over TCP reconnection fixed,
IPV6_V6ONLY now works for UDP,
amr(4) performance improvement, ioctl support for MegaRaid Tools,
ata(4) DMA for kernel dump and dumping to ataraid(4) devices,
ataraid(4) now supports JMicron ATA RAID metadata,
gmirror and graid3 disconnect_on_failure sysctls added,
g_md.ko renamed to geom_md.ko,
mpt(4) SAS HBA and 64-bit PCI support,
twa(4) updated to 9.3.0.1,
geli(8) now allows loading keyfiles before root file system is mounted,
initial support for SGI's XFS added,
ACPI-CA updated to 20051021,
DRM updated to 20051202,
TrustedBSD OpenBSM version 1.0 alpha 5 imported,
bsnmpd(1) Host Resources MIB in RFC 2790 support,
config(8) "nocpu" directive added,
config(8) now reads DEFAULT if any before the specified config file,
csh(1) NLS catalog support,
csup(1), CVSup-compatible client written in C imported,
devd(8) -f option,
ftpd(8) change related to PID file creation,
gbde(8) -k and -K option,
gpt(8) GPT partition label setting support,
gvinum(8) now supports to move a subdisk between drives,
GSS-API version 2 (RFC2743 and RFC2744) implemented,
jail(8) -J option,
kdump(1) -H and -s option,
kgdb(1) -w option,
libarchive(3) tp format support,
ln(1) -F option,
locate(1) -I option,
mdmfs(8) -P and -E option,
mergemaster(8) -A option,
mount(8) "nodev" option removed,
netstat(1) IPsec protocol stats support,
periodic(8) daily gmirror, graid3, gstripe, gconcat support,
pkill(1) -I option,
rfcomm_pppd(8) -c servicename support,
rtld(1) ELF symbol versioning support,
sh(1) "times" built-in command support,
truss(1) -s option,
truss(1) now works on FreeBSD/ppc,
usbd(8) removed in favor of devd(8),
xargs(1) -r option,
rc.d/auditd added,
rc.d/bluetooth, rc.d/hcsecd, rc.d/sdpd added,
rc.d/ftpd added,
rc.d/hostapd added,
rc.d/netif ipv4_addrs_<ifn> support,
rc.d/rcconf.sh removed and early_late_divider variable added,
rc.initdiskless now uses tar(1) instead of pax(1),
rc.d/pccard removed,
rc.d/ppp-user added (renamed from ppp),
removable_interfaces variable removed,
bsnmpd updated from 1.11 to 1.12,
pkg_add(1) -P option,
pkg_add(1) and pkg_create(1) -K option,
pkg_create(1) -x, -E, and -G options,
local_startup directory now evaluated by rcorder(8) with
scripts in the base system,
suffix of startup scripts removed,
variables "ldconfig_local_dirs" and "ldconfig_local32_dirs" added,
@cwd in pkg-plist now allows no directory argument, and
CHECKSUM.MD5's checksum in CHECKSUM.MD5 problem fixed.

18 years agomask out any action when copying the flags from the event to the knote..
jmg [Sat, 1 Apr 2006 20:15:39 +0000 (20:15 +0000)]
mask out any action when copying the flags from the event to the knote..

Pointed out by: Václav Haisman
Submitted by: Dan Nelson (slightly modifed patch)
MFC after: 3 days

18 years agoFix fat-fingered version define.
mjacob [Sat, 1 Apr 2006 19:49:55 +0000 (19:49 +0000)]
Fix fat-fingered version define.

18 years agoAdd missing #if's for NO_FLOATING_POINT
phk [Sat, 1 Apr 2006 19:06:54 +0000 (19:06 +0000)]
Add missing #if's for NO_FLOATING_POINT

18 years agoDon't hold the hardware mutex across getc(). It can wait indefinitely
marcel [Sat, 1 Apr 2006 19:04:54 +0000 (19:04 +0000)]
Don't hold the hardware mutex across getc(). It can wait indefinitely
for a character to be received. Instead let getc() do any necesary
locking.

18 years agoOverlooked that src.conf was built from here.
phk [Sat, 1 Apr 2006 18:34:30 +0000 (18:34 +0000)]
Overlooked that src.conf was built from here.

18 years agoHave WITHOUT_BIND_MTREE imply WITHOUT_BIND_ETC
phk [Sat, 1 Apr 2006 18:11:42 +0000 (18:11 +0000)]
Have WITHOUT_BIND_MTREE imply WITHOUT_BIND_ETC

18 years agoWhite space consistency with kasserts. Minor style tweaks.
rwatson [Sat, 1 Apr 2006 16:54:37 +0000 (16:54 +0000)]
White space consistency with kasserts.  Minor style tweaks.

MFC after: 3 months

18 years agoUpdate TCP for infrastructural changes to the socket/pcb refcount model,
rwatson [Sat, 1 Apr 2006 16:36:36 +0000 (16:36 +0000)]
Update TCP for infrastructural changes to the socket/pcb refcount model,
pru_abort(), pru_detach(), and in_pcbdetach():

- Universally support and enforce the invariant that so_pcb is
  never NULL, converting dozens of unnecessary NULL checks into
  assertions, and eliminating dozens of unnecessary error handling
  cases in protocol code.

- In some cases, eliminate unnecessary pcbinfo locking, as it is no
  longer required to ensure so_pcb != NULL.  For example, the receive
  code no longer requires the pcbinfo lock, and the send code only
  requires it if building a new connection on an otherwise unconnected
  socket triggered via sendto() with an address.  This should
  significnatly reduce tcbinfo lock contention in the receive and send
  cases.

- In order to support the invariant that so_pcb != NULL, it is now
  necessary for the TCP code to not discard the tcpcb any time a
  connection is dropped, but instead leave the tcpcb until the socket
  is shutdown.  This case is handled by setting INP_DROPPED, to
  substitute for using a NULL so_pcb to indicate that the connection
  has been dropped.  This requires the inpcb lock, but not the pcbinfo
  lock.

- Unlike all other protocols in the tree, TCP may need to retain access
  to the socket after the file descriptor has been closed.  Set
  SS_PROTOREF in tcp_detach() in order to prevent the socket from being
  freed, and add a flag, INP_SOCKREF, so that the TCP code knows whether
  or not it needs to free the socket when the connection finally does
  close.  The typical case where this occurs is if close() is called on
  a TCP socket before all sent data in the send socket buffer has been
  transmitted or acknowledged.  If INP_SOCKREF is found when the
  connection is dropped, we release the inpcb, tcpcb, and socket instead
  of flagging INP_DROPPED.

- Abort and detach protocol switch methods no longer return failures,
  nor attempt to free sockets, as the socket layer does this.

- Annotate the existence of a long-standing race in the TCP timer code,
  in which timers are stopped but not drained when the socket is freed,
  as waiting for drain may lead to deadlocks, or have to occur in a
  context where waiting is not permitted.  This race has been handled
  by testing to see if the tcpcb pointer in the inpcb is NULL (and vice
  versa), which is not normally permitted, but may be true of a inpcb
  and tcpcb have been freed.  Add a counter to test how often this race
  has actually occurred, and a large comment for each instance where
  we compare potentially freed memory with NULL.  This will have to be
  fixed in the near future, but requires is to further address how to
  handle the timer shutdown shutdown issue.

- Several TCP calls no longer potentially free the passed inpcb/tcpcb,
  so no longer need to return a pointer to indicate whether the argument
  passed in is still valid.

- Un-macroize debugging and locking setup for various protocol switch
  methods for TCP, as it lead to more obscurity, and as locking becomes
  more customized to the methods, offers less benefit.

- Assert copyright on tcp_usrreq.c due to significant modifications that
  have been made as part of this work.

These changes significantly modify the memory management and connection
logic of our TCP implementation, and are (as such) High Risk Changes,
and likely to contain serious bugs.  Please report problems to the
current@ mailing list ASAP, ideally with simple test cases, and
optionally, packet traces.

MFC after: 3 months

18 years agoMake WITHOUT_DYNAMICROOT=foo work again: remember to reference
phk [Sat, 1 Apr 2006 16:34:45 +0000 (16:34 +0000)]
Make WITHOUT_DYNAMICROOT=foo work again: remember to reference
libbsdxml and libsbuf.

18 years agoUpdate in_pcb-derived basic socket types following changes to
rwatson [Sat, 1 Apr 2006 16:20:54 +0000 (16:20 +0000)]
Update in_pcb-derived basic socket types following changes to
pru_abort(), pru_detach(), and in_pcbdetach():

- Universally support and enforce the invariant that so_pcb is
  never NULL, converting dozens of unnecessary NULL checks into
  assertions, and eliminating dozens of unnecessary error handling
  cases in protocol code.

- In some cases, eliminate unnecessary pcbinfo locking, as it is no
  longer required to ensure so_pcb != NULL.  For example, in protocol
  shutdown methods, and in raw IP send.

- Abort and detach protocol switch methods no longer return failures,
  nor attempt to free sockets, as the socket layer does this.

- Invoke in_pcbfree() after in_pcbdetach() in order to free the
  detached in_pcb structure for a socket.

MFC after: 3 months

18 years agoBreak out in_pcbdetach() into two functions:
rwatson [Sat, 1 Apr 2006 16:04:42 +0000 (16:04 +0000)]
Break out in_pcbdetach() into two functions:

- in_pcbdetach(), which removes the link between an inpcb and its
  socket.

- in_pcbfree(), which frees a detached pcb.

Unlike the previous in_pcbdetach(), neither of these functions will
attempt to conditionally free the socket, as they are responsible only
for managing in_pcb memory.  Mirror these changes into in6_pcbdetach()
by breaking it into in6_pcbdetach() and in6_pcbfree().

While here, eliminate undesired checks for NULL inpcb pointers in
sockets, as we will now have as an invariant that sockets will always
have valid so_pcb pointers.

MFC after: 3 months

18 years agoIn raw and raw-derived socket types, maintain and enforce invariant that
rwatson [Sat, 1 Apr 2006 15:55:44 +0000 (15:55 +0000)]
In raw and raw-derived socket types, maintain and enforce invariant that
the so_pcb pointer on the socket is always non-NULL.  This eliminates
countless unnecessary error checks, replacing them with assertions.

MFC after: 3 months

18 years agofix indent.
ume [Sat, 1 Apr 2006 15:53:39 +0000 (15:53 +0000)]
fix indent.

18 years agoChance protocol switch method pru_detach() so that it returns void
rwatson [Sat, 1 Apr 2006 15:42:02 +0000 (15:42 +0000)]
Chance protocol switch method pru_detach() so that it returns void
rather than an error.  Detaches do not "fail", they other occur or
the protocol flags SS_PROTOREF to take ownership of the socket.

soclose() no longer looks at so_pcb to see if it's NULL, relying
entirely on the protocol to decide whether it's time to free the
socket or not using SS_PROTOREF.  so_pcb is now entirely owned and
managed by the protocol code.  Likewise, no longer test so_pcb in
other socket functions, such as soreceive(), which have no business
digging into protocol internals.

Protocol detach routines no longer try to free the socket on detach,
this is performed in the socket code if the protocol permits it.

In rts_detach(), no longer test for rp != NULL in detach, and
likewise in other protocols that don't permit a NULL so_pcb, reduce
the incidence of testing for it during detach.

netinet and netinet6 are not fully updated to this change, which
will be in an upcoming commit.  In their current state they may leak
memory or panic.

MFC after: 3 months

18 years agoAnnotate uses of fgetsock() with indications that they should rely
rwatson [Sat, 1 Apr 2006 15:25:01 +0000 (15:25 +0000)]
Annotate uses of fgetsock() with indications that they should rely
on their existing file descriptor references to sockets, rather than
use fgetsock() to retrieve a direct socket reference.

MFC after: 3 months

18 years agoChange protocol switch pru_abort() API so that it returns void rather
rwatson [Sat, 1 Apr 2006 15:15:05 +0000 (15:15 +0000)]
Change protocol switch pru_abort() API so that it returns void rather
than an int, as an error here is not meaningful.  Modify soabort() to
unconditionally free the socket on the return of pru_abort(), and
modify most protocols to no longer conditionally free the socket,
since the caller will do this.

This commit likely leaves parts of netinet and netinet6 in a situation
where they may panic or leak memory, as they have not are not fully
updated by this commit.  This will be corrected shortly in followup
commits to these components.

MFC after:      3 months

18 years agoConvert the SYNOPSIS section to look like the ones used in other driver
brueffer [Sat, 1 Apr 2006 11:21:00 +0000 (11:21 +0000)]
Convert the SYNOPSIS section to look like the ones used in other driver
manpages, mention module support.

MFC after: 3 days

18 years agoAdd comment to accept1() that it should use getsock() instead of fgetsock()
rwatson [Sat, 1 Apr 2006 11:14:56 +0000 (11:14 +0000)]
Add comment to accept1() that it should use getsock() instead of fgetsock()
to avoid additional mutex operations, and also to avoid use of soref/sorele
which are now not preferred.

MFC after: 3 months

18 years agoMark fgetsock() and fputsock() as depcrecated: callers should rely on
rwatson [Sat, 1 Apr 2006 11:09:54 +0000 (11:09 +0000)]
Mark fgetsock() and fputsock() as depcrecated: callers should rely on
the file descriptor reference, rather than paying additional lock
operations to acquire a socket reference from the file descriptor.
This will also help to ensure that file descriptor based socket
requests are not delivered to a socket after close.  Most consumers
have already been converted to this model.

MFC after: 3 months

18 years agoConvert the SYNOPSIS section to look like the ones used in other driver
brueffer [Sat, 1 Apr 2006 10:56:36 +0000 (10:56 +0000)]
Convert the SYNOPSIS section to look like the ones used in other driver
manpages, mention module support.
Also add the crypto and cryptodev devices as the drivers are kind of useless
without them.

MFC after: 3 days

18 years agoConvert the SYNOPSIS section to look like the ones used in other driver
brueffer [Sat, 1 Apr 2006 10:55:00 +0000 (10:55 +0000)]
Convert the SYNOPSIS section to look like the ones used in other driver
manpages.

MFC after: 3 days

18 years agoAdd a comment describing SS_PROTOREF in detail. This will eventually be
rwatson [Sat, 1 Apr 2006 10:54:51 +0000 (10:54 +0000)]
Add a comment describing SS_PROTOREF in detail.  This will eventually be
in socket(9).

MFC after: 3 months

18 years agoAssert so->so_pcb is NULL in sodealloc() -- the protocol state should not
rwatson [Sat, 1 Apr 2006 10:45:52 +0000 (10:45 +0000)]
Assert so->so_pcb is NULL in sodealloc() -- the protocol state should not
be present at this point.  We will eventually remove this assert because
the socket layer should never look at so_pcb, but for now it's a useful
debugging tool.

MFC after: 3 months

18 years agoAdd a somewhat sizable comment documenting the semantics of various kernel
rwatson [Sat, 1 Apr 2006 10:43:02 +0000 (10:43 +0000)]
Add a somewhat sizable comment documenting the semantics of various kernel
socket calls relating to the creation and destruction of sockets.  This
will eventually form the foundation of socket(9), but is currently in too
much flux to do so.

MFC after: 3 months

18 years agoConvert the SYNOPSIS section to look like the ones used in other driver
brueffer [Sat, 1 Apr 2006 10:37:35 +0000 (10:37 +0000)]
Convert the SYNOPSIS section to look like the ones used in other driver
manpages.  Don't mention the include file, it's not important for the
operation of this driver.

MFC after: 3 days

18 years agoAdd a standard boilerplate to the SYNOPSIS section that mentions how
brueffer [Sat, 1 Apr 2006 10:10:36 +0000 (10:10 +0000)]
Add a standard boilerplate to the SYNOPSIS section that mentions how
to load a kernel module.

MFC after: 3 days

18 years agoMention the module in the synopsis.
brueffer [Sat, 1 Apr 2006 09:55:37 +0000 (09:55 +0000)]
Mention the module in the synopsis.

18 years agoFix some of the previus changes 'better'.
mjacob [Sat, 1 Apr 2006 07:12:18 +0000 (07:12 +0000)]
Fix some of the previus changes 'better'.

There's something strange going on with async events. They seem
to be be treated differently for different Fusion implementations.
Some will really tell you when it's okay to free the request that
started them.  Some won't. Very disconcerting.

This is particularily bad when the chip (FC in this case) tells you
in the reply that it's not a continuation reply, which means you
can free the request that its associated with. However, if you do
that, I've found that additional async event replies come back for
that message context after you freed it. Very Bad Things Happen.

Put in a reply register debounce. Warn about out of range context
indices. Use more MPILIB defines where possible. Replace bzero with
memset. Add tons more KASSERTS. Do a *lot* more request free list
auditting and serial number usages. Get rid of the warning about
the short IOC Facts Reply.  Go back to 16 bits of context index.

Do a lot more target state auditting as well. Make a tag out
of not only the ioindex but the request index as well and worry
less about keeping a full serial number.

18 years agoBuild the scc(4) module with EBus and SBus attachments for sparc64
marcel [Sat, 1 Apr 2006 04:54:47 +0000 (04:54 +0000)]
Build the scc(4) module with EBus and SBus attachments for sparc64
only and build the scc(4) module with MacIO attachment for powerpc.

18 years agoAdd the MacIO attachment for scc(4).
marcel [Sat, 1 Apr 2006 04:53:08 +0000 (04:53 +0000)]
Add the MacIO attachment for scc(4).