4 years agonrelease: Read the # of CPUs and build with -j / MAKE_JOBS.
Sascha Wildner [Fri, 24 Jul 2009 11:36:13 +0000 (13:36 +0200)]
nrelease: Read the # of CPUs and build with -j / MAKE_JOBS.

While here, do clean up a bit.

4 years agoatomic.[ch]: Clean up some warnings that crept up in the recent weeks.
Sascha Wildner [Tue, 28 Jul 2009 11:58:37 +0000 (13:58 +0200)]
atomic.[ch]: Clean up some warnings that crept up in the recent weeks.

4 years agotelnetd.8: Some more mdoc cleanup.
Sascha Wildner [Tue, 28 Jul 2009 11:53:58 +0000 (13:53 +0200)]
telnetd.8: Some more mdoc cleanup.

4 years agoTCP - Fix re-establishment issues if a client reboots
Matthew Dillon [Tue, 28 Jul 2009 04:22:10 +0000 (21:22 -0700)]
TCP - Fix re-establishment issues if a client reboots

When the machine hosting the client side of a TCP connection
reboots without clearing the connection, the server side will
continue to believe that the connection is in an established
state.  If the client attempts to reconnect using the same
port pair (after rebooting, typically), the sequence space checks
against DOS attacks on the server side will cause the SYN
packets to be dropped.

A dandy solution to this problem is to force a keep-alive within
half a second of receiving a SYN on an ESTABLISHED socket.  The
server will revalidate the connection and, since the client is
actually alive, will get an immediately Reset.  The the next
SYN attempt from the client will then succeed.

A SYN sent as part of a DOS attack has little effect other then
to cause the server to probe the established connection within
half a second of receiving the bogus SYN.

In particular, this fixes issues with TCP NFS connections.  NFS
clients are often unable to umount the NFS mounts and the TCP
connection is left established through the reboot.  Instead of
hanging on SYNs being simply dropped by the server, the server
now properly detects that the connection is in fact dead after
the first SYN and properly reestablishes it on the next one.

4 years agoTCP - Remove net.inet.tcp.minmssoverload
Matthew Dillon [Tue, 28 Jul 2009 00:44:49 +0000 (17:44 -0700)]
TCP - Remove net.inet.tcp.minmssoverload

This feature is horribly broken and has been removed.  It immediately breaks
NFS over TCP, it makes major assumptions about how TCP connections are used
which break standards, particular with regards to imposing a minimum data
size for synchronous communications, and the algorithm does not scale to
network speed AT ALL.

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Mon, 27 Jul 2009 23:22:29 +0000 (16:22 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoGZIP - Add SCM ident and commit missed changes to gzip.c
Matthew Dillon [Mon, 27 Jul 2009 23:19:10 +0000 (16:19 -0700)]
GZIP - Add SCM ident and commit missed changes to gzip.c

* Add SCM ident so Xin Li can track the file, and add missed changes
  to gzip.c

4 years agogzip.1 & co.: Please keep DragonFly timeline for .Dd, not FreeBSD's.
Sascha Wildner [Mon, 27 Jul 2009 14:04:38 +0000 (16:04 +0200)]
gzip.1 & co.: Please keep DragonFly timeline for .Dd, not FreeBSD's.

4 years agomxge.4: Comment out incomplete sentence, use .Fx and add ifmedia(4) xref.
Sascha Wildner [Mon, 27 Jul 2009 14:03:21 +0000 (16:03 +0200)]
mxge.4: Comment out incomplete sentence, use .Fx and add ifmedia(4) xref.

4 years agotelnetd.8: Clean up a bit.
Sascha Wildner [Mon, 27 Jul 2009 14:01:47 +0000 (16:01 +0200)]
telnetd.8: Clean up a bit.

* We do not compile -DBFTPDAEMON so comment out bftp related parts.

* It's 'RFC xxxx', not "RFC-xxxx'.

* Start sentences on a new line.

4 years agoopen.2: Remove trailing whitespace.
Sascha Wildner [Mon, 27 Jul 2009 13:59:13 +0000 (15:59 +0200)]
open.2: Remove trailing whitespace.

4 years agoRemove suser*() functions, manpage and assorted remains.
Sascha Wildner [Sun, 26 Jul 2009 18:50:13 +0000 (20:50 +0200)]
Remove suser*() functions, manpage and assorted remains.

4 years agoImplement autosizing TCP socket buffers.
Peter Avalos [Mon, 20 Jul 2009 01:50:00 +0000 (15:50 -1000)]
Implement autosizing TCP socket buffers.

Normally the socket buffers are static (either derived from global
defaults or set with setsockopt) and do not adapt to real network
conditions. Two things happen: a) your socket buffers are too small
and you can't reach the full potential of the network between both
hosts; b) your socket buffers are too big and you waste a lot of
kernel memory for data just sitting around.

With automatic TCP send and receive socket buffers we can start with a
small buffer and quickly grow it in parallel with the TCP congestion
window to match real network conditions.

New sysctls are:
  net.inet.tcp.sendbuf_auto=1 (enabled)
  net.inet.tcp.sendbuf_inc=8192 (8K, step size)
  net.inet.tcp.sendbuf_max=16777216 (16M, growth limit)
  net.inet.tcp.recvbuf_auto=1 (enabled)
  net.inet.tcp.recvbuf_inc=16384 (16K, step size)
  net.inet.tcp.recvbuf_max=16777216 (16M, growth limit)

Additionally, add limiters and sanity checks for TCP MSS (maximum segment
size) resource exhaustion attacks.

Obtained-from: FreeBSD

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sun, 26 Jul 2009 21:53:05 +0000 (14:53 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoRepair rcenable(8) and rcdisable(8).
Sascha Wildner [Sun, 26 Jul 2009 21:39:27 +0000 (23:39 +0200)]
Repair rcenable(8) and rcdisable(8).

* rcenable(8) was not playing nicely with our three year old change to
  no longer depend on _enable being appended to rc variables for starting
  daemons etc. (i.e., foo_enable=yes and foo=yes both work).

* rcdisable(8) did not properly run rcstop(8) because that needs to be
  run when the variable is still set to 'yes' and not after it's been
  set to 'no'.

Noticed-by: phma on #dragonflybsd
4 years agolibc_r: fix bugs in openat()
Nicolas Thery [Sun, 26 Jul 2009 18:40:46 +0000 (20:40 +0200)]
libc_r: fix bugs in openat()

The openat() wrapper was not locking its file descriptor argument.

Special case the magic AT_FDCWD descriptor in the file descriptor
locking code (_FD_LOCK() / _FD_UNLOCK()) to avoid EINVAL on locking.

4 years agomake openat(2) a POSIX syscall instead of BSD one.
Nicolas Thery [Sun, 26 Jul 2009 16:45:10 +0000 (18:45 +0200)]
make openat(2) a POSIX syscall instead of BSD one.

4 years agoNFS - Increase server-side listen queue for TCP connections from 5 to 64
Matthew Dillon [Sun, 26 Jul 2009 18:56:13 +0000 (11:56 -0700)]
NFS - Increase server-side listen queue for TCP connections from 5 to 64

* The listen queue was not big enough, sometimes when clients boot up
  they get stuck for a short period of time due to their NFS connections
  getting thrown away by the server.

4 years agopriv.9: Mention that NULL_CRED_OKAY is used by priv_check_cred().
Sascha Wildner [Sun, 26 Jul 2009 18:49:02 +0000 (20:49 +0200)]
priv.9: Mention that NULL_CRED_OKAY is used by priv_check_cred().

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sun, 26 Jul 2009 18:35:57 +0000 (11:35 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoGZIP - Add unpack support to gzip
Matthew Dillon [Sun, 26 Jul 2009 18:35:22 +0000 (11:35 -0700)]
GZIP - Add unpack support to gzip

Submitted-by: Xin LI <delphij@delphij.net>
Ported-from: FreeBSD

4 years agoadd fdopendir(3) implementation (1/?)
Nicolas Thery [Sun, 26 Jul 2009 05:45:47 +0000 (07:45 +0200)]
add fdopendir(3) implementation (1/?)

POSIX states that the file offset of the passed descriptor determines the
directory entry read but this commit supports only descriptors with null

Also add __fdopendir2() for symmetry with opendir/__opendir2().

4 years agodirent.h: fix typo in comment
Nicolas Thery [Sun, 26 Jul 2009 03:35:22 +0000 (05:35 +0200)]
dirent.h: fix typo in comment

4 years agoopen.2: Fix typo and reword an awkward sounding sentence.
Sascha Wildner [Sat, 25 Jul 2009 22:20:49 +0000 (00:20 +0200)]
open.2: Fix typo and reword an awkward sounding sentence.

4 years agoMerge branch 'master' of ssh://swildner@crater.dragonflybsd.org/repository/git/dragonfly
Sascha Wildner [Sat, 25 Jul 2009 21:41:31 +0000 (23:41 +0200)]
Merge branch 'master' of ssh://swildner@crater.dragonflybsd.org/repository/git/dragonfly

4 years agotcsetpgrp(3): Return EINVAL upon invalid process group id.
Stathis Kamperis [Sat, 25 Jul 2009 20:03:40 +0000 (23:03 +0300)]
tcsetpgrp(3): Return EINVAL upon invalid process group id.

POSIX mandates it and our man page advertises that we do it already.

DragonFly-bug: <http://bugs.dragonflybsd.org/issue1421>
Partially reviewed-by: dillon@

4 years agoat(1): Print datetime upon job submission as POSIX mandates.
Stathis Kamperis [Sat, 25 Jul 2009 17:21:40 +0000 (20:21 +0300)]
at(1): Print datetime upon job submission as POSIX mandates.

$ at 20:39
Job 19 will be executed using /bin/sh

$ at 20:39
Job 21 will be executed using /bin/sh
Job 21 at Mon Jul 20 20:39:00 2009

Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1432>

4 years agoadd openat(2) man page
Nicolas Thery [Sat, 25 Jul 2009 07:17:35 +0000 (09:17 +0200)]
add openat(2) man page

Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1435>
Obtained-from:   FreeBSD

4 years agoadd openat(2) system call
Nicolas Thery [Sat, 25 Jul 2009 07:12:09 +0000 (09:12 +0200)]
add openat(2) system call

Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1435>
Reviewed-by: dillon@
4 years agoman8/Makefile: Fix a small typo and sort alphabetically.
Sascha Wildner [Sat, 25 Jul 2009 07:03:57 +0000 (09:03 +0200)]
man8/Makefile: Fix a small typo and sort alphabetically.

4 years agorc,rc.8,rc.shutdown: Note that rc & rc.shutdown aren't for local modification
Thomas Nikolajsen [Fri, 24 Jul 2009 22:35:31 +0000 (00:35 +0200)]
rc,rc.8,rc.shutdown: Note that rc & rc.shutdown aren't for local modification

Update description of rc.local, rc.shutdown.local &
make alias for latter to rc.8

4 years agoae(4): Reset PHY during resuming
Sepherosa Ziehau [Fri, 24 Jul 2009 11:44:48 +0000 (19:44 +0800)]
ae(4): Reset PHY during resuming

Submitted-by: Alexander Polakov <polachok@gmail.com>
4 years agostty.1: Start sentences on a new line.
Sascha Wildner [Fri, 24 Jul 2009 00:12:25 +0000 (02:12 +0200)]
stty.1: Start sentences on a new line.

4 years agoNFS - Change the mount default from udp to tcp, add "udp" option.
Matthew Dillon [Thu, 23 Jul 2009 22:41:41 +0000 (15:41 -0700)]
NFS - Change the mount default from udp to tcp, add "udp" option.

* Mount_nfs now mounts TCP by default.

* Added "udp" option, and the -U option now works similarly to -T,
  but for udp instead of tcp.

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Thu, 23 Jul 2009 20:43:44 +0000 (13:43 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoVKE - Move vke_init_addr() to fix panic
Matthew Dillon [Thu, 23 Jul 2009 20:43:11 +0000 (13:43 -0700)]
VKE - Move vke_init_addr() to fix panic

vke_init_addr() requires VKE to be able to send and receive packets, so it
must be called AFTER the cothreads have been created, not before.

4 years agoAdd et_EE.ISO8859-15 locale.
Hasso Tepper [Thu, 23 Jul 2009 19:19:45 +0000 (22:19 +0300)]
Add et_EE.ISO8859-15 locale.

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Thu, 23 Jul 2009 17:14:34 +0000 (10:14 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoHAMMER - Augment "Missing inode for dirent" Warning.
Matthew Dillon [Thu, 23 Jul 2009 17:13:58 +0000 (10:13 -0700)]
HAMMER - Augment "Missing inode for dirent" Warning.

* When warning about a missing inode for a directory entry, also print out
  the as-of transaction id and the localization field so we can tell
  whether the warning is related to a snapshot and/or PFS.

4 years agocmp.1: Add compatibility section.
Stathis Kamperis [Thu, 23 Jul 2009 13:14:37 +0000 (16:14 +0300)]
cmp.1: Add compatibility section.

4 years agoAHD: Add a DELAY() in the XPT_RESET_BUS path to avoid a race.
Matthew Dillon [Thu, 23 Jul 2009 09:06:24 +0000 (02:06 -0700)]
AHD: Add a DELAY() in the XPT_RESET_BUS path to avoid a race.

The exact race isn't known but adding the DELAY() appears to fix
it.  It could be related to ccb's queued prior to the bus reset
which we have to abort.

With-help-from: Peter Avalos <pavalos@theshell.com>

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Thu, 23 Jul 2009 05:06:12 +0000 (22:06 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoHAMMER / VFS_VGET - Add optional dvp argument to VFS_VGET(). Fix readdirplus
Matthew Dillon [Thu, 23 Jul 2009 05:00:13 +0000 (22:00 -0700)]
HAMMER / VFS_VGET - Add optional dvp argument to VFS_VGET().  Fix readdirplus

* VGET is used by NFS to acquire a vnode given an inode number.  HAMMER
  requires additional information to determine the PFS the inode is being
  acquired from.

  Add an optional directory vnode argument to the VGET.  If non-NULL, HAMMER
  will extract the PFS information from this vnode.

* Adjust NFS to pass the dvp to VGET when doing a readdirplus.

  Note that the PFS is already encoded in file handles, but readdirplus
  acquires the attributes for each directory entry it scans (readdir does
  not).  This fixes readdirplus for NFS served HAMMER PFS exports.

4 years agoNFS - fix d_ino reporting for readdir, readdirplus, fix unsigned check
Matthew Dillon [Thu, 23 Jul 2009 04:40:10 +0000 (21:40 -0700)]
NFS - fix d_ino reporting for readdir, readdirplus, fix unsigned check

* The d_ino reported by readdir/readdirplus was not encoding the entire
  64 bit inode number.

* Extracted cnt/siz variables are signed ints, cast to unsigned to check
  against max to deal with negative values.

4 years agoAdd some more Sys V compatibility integer typedefs.
Hasso Tepper [Thu, 23 Jul 2009 04:04:24 +0000 (07:04 +0300)]
Add some more Sys V compatibility integer typedefs.

4 years ago/usr/Makefile: cvs update using -q.
Sascha Wildner [Wed, 22 Jul 2009 19:27:13 +0000 (21:27 +0200)]
/usr/Makefile: cvs update using -q.

4 years agodma: don't block when trying to aquire a queue file
Simon Schubert [Tue, 21 Jul 2009 23:21:44 +0000 (01:21 +0200)]
dma: don't block when trying to aquire a queue file

We might race with some other process, so it is imperative to treat a
locked file as a soft error instead of blocking on the file until the
other process unlocks it.

4 years agodma: don't block on lock/opening the mbox file, backoff instead
Simon Schubert [Tue, 21 Jul 2009 23:20:54 +0000 (01:20 +0200)]
dma: don't block on lock/opening the mbox file, backoff instead

4 years agodma: accept -q without argument. report argument errors.
Simon Schubert [Tue, 21 Jul 2009 23:20:08 +0000 (01:20 +0200)]
dma: accept -q without argument.  report argument errors.

4 years agodma: add comments for ESMTP support
Simon Schubert [Tue, 21 Jul 2009 00:29:02 +0000 (02:29 +0200)]
dma: add comments for ESMTP support

4 years agodma: treat seek errors as permanent errors
Simon Schubert [Tue, 21 Jul 2009 00:28:46 +0000 (02:28 +0200)]
dma: treat seek errors as permanent errors

4 years agodma: more loudly note that we should query for MX records
Simon Schubert [Mon, 20 Jul 2009 23:51:45 +0000 (01:51 +0200)]
dma: more loudly note that we should query for MX records

4 years agodma: fix various bugs in local mbox delivery
Simon Schubert [Mon, 20 Jul 2009 21:27:50 +0000 (23:27 +0200)]
dma: fix various bugs in local mbox delivery

4 years agodma: fix mail bouncing
Simon Schubert [Mon, 20 Jul 2009 21:27:37 +0000 (23:27 +0200)]
dma: fix mail bouncing

4 years agodma: always log error exits
Simon Schubert [Mon, 20 Jul 2009 20:48:00 +0000 (22:48 +0200)]
dma: always log error exits

4 years agodma: drop CVS ids
Simon Schubert [Mon, 20 Jul 2009 19:58:39 +0000 (21:58 +0200)]
dma: drop CVS ids

4 years agodma: rewrite file management
Simon Schubert [Mon, 20 Jul 2009 19:53:32 +0000 (21:53 +0200)]
dma: rewrite file management

Close files as early as possible, possibly re-open them later.  This is
so that we avoid filedesc sharing problems completely and that we won't
run out of fdesc in case of a large queue.

4 years agodma: correct logic for setting the locked flag
Simon Schubert [Mon, 20 Jul 2009 11:33:09 +0000 (13:33 +0200)]
dma: correct logic for setting the locked flag

4 years agodma: restructure logging
Simon Schubert [Sun, 19 Jul 2009 23:20:27 +0000 (01:20 +0200)]
dma: restructure logging

Don't carry the ident manually.  Instead set a global tag once the
ident is fixed.

4 years agodma: note that the data file provides the id
Simon Schubert [Sun, 19 Jul 2009 14:01:58 +0000 (16:01 +0200)]
dma: note that the data file provides the id

4 years agodma: rework queue handling
Simon 'corecode' Schubert [Sun, 2 Nov 2008 00:10:10 +0000 (01:10 +0100)]
dma: rework queue handling

4 years agodma: Move comment.
Simon 'corecode' Schubert [Mon, 27 Oct 2008 05:45:12 +0000 (06:45 +0100)]
dma: Move comment.

4 years agodma: Re-arrange argument consistency checks.
Simon 'corecode' Schubert [Fri, 17 Oct 2008 07:32:26 +0000 (09:32 +0200)]
dma: Re-arrange argument consistency checks.

4 years agodma: better tag handling
Simon 'corecode' Schubert [Thu, 16 Oct 2008 15:45:10 +0000 (17:45 +0200)]
dma: better tag handling

4 years agoEXT2FS: support variable inode size.
Matthew Dillon [Tue, 21 Jul 2009 19:39:03 +0000 (12:39 -0700)]
EXT2FS: support variable inode size.

Obtained-from: FreeBSD
Cherry-picked-from: http://github.com/polachok/dragonflybsd/commit/d8b7a4caaa2724148e95939207977a0730c349b2
Submitted-by: Alexander Polakov
4 years agoSync zoneinfo database with tz{code,data}2009k from elsie.
Sascha Wildner [Mon, 20 Jul 2009 23:19:53 +0000 (01:19 +0200)]
Sync zoneinfo database with tz{code,data}2009k from elsie.

africa:         8.21 -> 8.22
asia:           8.35 -> 8.36
europe:         8.21 -> 8.22
leapseconds:    8.8  -> 8.9

zic.c:          8.19 -> 8.20

From Arthur David Olson's comments:

* africa: Change Mauritius to reflect that the 2008-2009 DST experiment
      is not repeated (and to change end of DST in 2009 from 2:00
      standard time to 2:00 local time) (thanks to Steffen Thorsen).

* asia: Arbitrarily cut off Dhaka DST at end of 2009 (so that a POSIX-
      style time zone string can appear in the Dhaka binary file, and
      for the benefit of systems with old glibc reimplementations of
      the time zone library that don't handle permanent DST correctly).
      Note that another change will be needed once the real end date
      for DST in Dhaka is known.

* europe: Update URL for Directive 2000/84/EC on summer-time
      arrangements (thanks to Colin Watson and Ian Jackson).

* leapseconds: Change "no leap second" comment (no leap second at end
      of 2009).

* zic.c: Do not end a binary file with a POSIX-style time zone string
      for locations that end up in permanent DST (thanks to Andreas Schwab).

4 years agoUpdate gzip.
Peter Avalos [Sat, 18 Jul 2009 23:35:46 +0000 (13:35 -1000)]
Update gzip.

- gzexe: Ensure we do not compress files we need for decompressing by
also checking hard links. From Andrew Dalgleish. (from OpenBSD)
- note that -n also stops the timestamp from being output.
- Don't abort decompression if there are no bytes in the output buffer
when the end of compressed block (ie the crc) is reached.
(ie when decompressing concatenated zipped files).
- If stdin is the input stream, fstat it and check if it's
file. If so, use it's mtime for the mtime in the header. Otherwise use
time(2)'s result instead. Lines up with GNU gzip and RFC 1952 now as
- Fix parsing of $GZIP so that not to overrun the end of string.
- handle partial reads.
- avoid an infinite loop while decompressing invalid gzip files.
- in file_compress() always stat() the input file.  this patch avoids
reading from uninitialised space.
- Fix a few issues:
 gzip -vt just prints the contents of a .Z file
 gzip -vt will print OK even if the .gz file is corrupt
 gzip -vt prints nothing with a .bz2 file
 gzip can loop endlessly with a corrupt .bz2 file
- Don't warn about >4GB files not having their size correctly stored.
- Remove unhandled H option from getopt() argument. Describe -l in usage.
- properly check the return value of read() & pread().
- Delete impossible code.
- Abort decompression with an error when EOF is reached on input. The
test output will then be 'NOT OK'.
- End a decompression when trailing garbage is found. It emits a warning
message and causes a non-zero exit status (similar to GNU gzip).
- properly detect when the output fails (eg, full filesystem) and do not
delete the input file.

Dragonfly-bug: http://bugs.dragonflybsd.org/issue1026

4 years agoNFS - Increase default read-ahead from 4 to 6
Matthew Dillon [Sat, 18 Jul 2009 22:09:40 +0000 (15:09 -0700)]
NFS - Increase default read-ahead from 4 to 6

But continue to play nice with the server.

4 years agoNFS - Implement async write BIO, greatly increase sockbuf limits, better rexmit
Matthew Dillon [Sat, 18 Jul 2009 22:03:49 +0000 (15:03 -0700)]
NFS - Implement async write BIO, greatly increase sockbuf limits, better rexmit

* Write BIOs are now executed asynchronously.

* Commit BIOs are now executed asynchronously.

* Increase the sockbuf limit to around 2MBytes, which is what is needed
  to handle the burst writing a DragonFly client can do now when the
  kernel flushes its buffers (at least for a UDP socket).

* Adjust the rexmit code.  Also detect duplicate packets received and
  adjust the SRTT up a little since no RTT is calculated when a timeout


  vfs.nfs.soreserve - This parameter now overrides all other kernel and
  user parameters to set the NFS sockets limit.

  vfs.nfs.maxasyncbio - This is set to the hard-coded maximum by default
  and may be reduced to accomodate insufficiently
  endowed remote servers.

* NOTE ON UDP MOUNTS TO REMOTE SERVERS.  If the remote server does not have
  sufficient sockbuf space to receive a large burst of UDP packets performance
  will suffer greatly.  To allieviate this issue you can decrease
  vfs.nfs.maxasyncbio on the DragonFly client, or you can simply use a
  TCP mount.

4 years agoThe limit specified in kern.ipc.maxsockbuf only applies to userland.
Matthew Dillon [Sat, 18 Jul 2009 22:01:07 +0000 (15:01 -0700)]
The limit specified in kern.ipc.maxsockbuf only applies to userland.

This sysctl parameter no longer effects kernel-created or kernel-controlled
sockets whos maximum sizes are specified by other sysctls.

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sat, 18 Jul 2009 15:19:50 +0000 (08:19 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoNFS - Fix panic on umount/reboot
Matthew Dillon [Sat, 18 Jul 2009 15:18:49 +0000 (08:18 -0700)]
NFS - Fix panic on umount/reboot

* The rx thread sometimes gets no-error and 0-bytes returned from
  its soreceive call, but the caller expects a mbuf in that case.
  Check for the case and convert to EPIPE.

4 years agonfsclient: nfsiod isn't used anymore
Thomas Nikolajsen [Sat, 18 Jul 2009 10:39:39 +0000 (12:39 +0200)]
nfsclient: nfsiod isn't used anymore

 * Remove nfsclient rc.conf variable; it was just passed to nfsiod

 * Remove nfsiod execution from rc.d/nfsclient

4 years agorc.d/nfsclient: Put newline after last action
Thomas Nikolajsen [Sat, 18 Jul 2009 10:23:10 +0000 (12:23 +0200)]
rc.d/nfsclient: Put newline after last action

4 years agorc.d/random: Fix typos
Thomas Nikolajsen [Sat, 18 Jul 2009 11:35:33 +0000 (13:35 +0200)]
rc.d/random: Fix typos

rc.d/random feed_dev_random() would leave seedenable=1;
no effect in default config:
feed_dev_random not called as entropy_file and entropy_dir both unset.

4 years agoImport complex arithmetic functions from {Net,Free}BSD.
Stathis Kamperis [Sat, 18 Jul 2009 06:49:51 +0000 (09:49 +0300)]
Import complex arithmetic functions from {Net,Free}BSD.

swildner@ helped test it with llvm/clang.
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1424>

4 years agoNFS - Stability pass / recent work.
Matthew Dillon [Sat, 18 Jul 2009 05:31:28 +0000 (22:31 -0700)]
NFS - Stability pass / recent work.

* Fix numerous bugs introduced in the conversion, on both the server side
  and the client side.

4 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Sat, 18 Jul 2009 01:35:13 +0000 (18:35 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

4 years agoNFS - Rewrite the RTT code and the request flags & low level state machine
Matthew Dillon [Sat, 18 Jul 2009 01:25:05 +0000 (18:25 -0700)]
NFS - Rewrite the RTT code and the request flags & low level state machine

* The RTT code basically did not work with UDP, and never has very well.
  Use a somewhat different algorithm and make more of an assumption that
  the network is either reliable, or if it isn't reliable that the sysad
  is using a reliable protocol (such as TCP).

  The new RTT code should do a better job, though there will still
  be significant stalling on a lossy network if using UDP (too bad!).

* Replace the congestion control code.  Instead of trying to defer
  packet transmission to the nfs_timer, which we no longer run at
  insane rates, we instead limit the number of async BIOs we allow
  to be queued at any given moment.

* Redo the req->r_flags flags and the low level RPC interlocks between
  the various consumers and producers.  Add additional flags that
  can be tested in assertions to validate expectations.

  Use R_LOCKED for more then just the nfs_timer code.

* Close a memory hole.

* Hold critical sections to close races that could result in a
  thread deadlocking in soreceive waiting for a reply that another
  thread already processed.

* Add two sysctls to aid in testing.

    vfs.nfs.showrexmit - Causes "X" to be printed on the console whenever
  NFS feels that it must retransmit a RPC.  Only
  occurs with UDP mounts.

    vfs.nfs.showrtt - Causes NFS to print out the SRTT, SDRTT, and
  converted timeout calculation once a second
  while NFS requests are active.

* Increase the asynchronous BIO limits.  Because we only need two helper
  threads and no longer depend on dozens of synchronous-rpc threads
  (the old nfsiod's), there is no practical limit to the number of
  requests we can have active.

  Reformulate how asynchronous BIOs are accounted for.  They are now
  accounted for from the moment they are queued to the very end where
  they are biodone()'d.

4 years agotsleep_interlock() - Fix bug in cpu_lwp_exit().
Matthew Dillon [Sat, 18 Jul 2009 00:55:52 +0000 (17:55 -0700)]
tsleep_interlock() - Fix bug in cpu_lwp_exit().

* Fix a bug in cpu_lwp_exit() which could cause a TAILQ assertion due to
  a thread not being properly removed from the tsleep queue.

4 years agoAPIC ABI: Support 32 IDT vectors
Sepherosa Ziehau [Fri, 17 Jul 2009 11:14:17 +0000 (19:14 +0800)]
APIC ABI: Support 32 IDT vectors

For two IO APIC hardware configuration, it is now common that number
of needed IDT vectors goes beyond 24, since we pre-allocate the PCI
irq number (irq number and IDT vector is 1:1 mapping) during MP table

Reported-by: y0netan1@
4 years agoRemove unused macro
Sepherosa Ziehau [Fri, 17 Jul 2009 10:56:26 +0000 (18:56 +0800)]
Remove unused macro

4 years agoNFS - Fix unmounting blockages, fix tick interval, hack cpu assignments.
Matthew Dillon [Fri, 17 Jul 2009 11:38:35 +0000 (04:38 -0700)]
NFS - Fix unmounting blockages, fix tick interval, hack cpu assignments.

* Umount was having problems due to the way the helper threads were
  being shutdown.  Should be fixed.

* The NFS timer, which is responsible for handling retransmits and
  timeouts, did not need to be set to one tick (10ms).  200ms is
  just fine.

* Hack cpu assignments for the tx and rx helper threads.

4 years agoNFS - implement async state machine for nfs_readrpc_bio()
Matthew Dillon [Fri, 17 Jul 2009 10:02:13 +0000 (03:02 -0700)]
NFS - implement async state machine for nfs_readrpc_bio()

Implement the basic state machine mechanics to allow the two
helper threads to separate transmit and receive work for any
number of NFS RPCs.

4 years agoNFS - refactor nfs_request() and add state machine fields to nfsm_info
Matthew Dillon [Fri, 17 Jul 2009 02:37:21 +0000 (19:37 -0700)]
NFS - refactor nfs_request() and add state machine fields to nfsm_info

* nfs_request() now operates as a state machine and can be told to
  return when it reaches any state, allowing RPC sequences to be
  split up (to be used by the new iod).

4 years agoNFS - Cleanup pass -factor out strict temporaries from nfsm_info
Matthew Dillon [Fri, 17 Jul 2009 01:22:22 +0000 (18:22 -0700)]
NFS - Cleanup pass -factor out strict temporaries from nfsm_info

4 years agoNFS - Fix refactor bugs.
Matthew Dillon [Fri, 17 Jul 2009 00:03:55 +0000 (17:03 -0700)]
NFS - Fix refactor bugs.

* The new ERROROUT macro unconditionally overwrites error.  Don't use
  it for cases where we wish to retain a prior error.

4 years agoNFS - Marathon - completely refactor the nfsm_* macros.
Matthew Dillon [Thu, 16 Jul 2009 23:21:36 +0000 (16:21 -0700)]
NFS - Marathon - completely refactor the nfsm_* macros.

Completely refactor the nfsm_*() macros in nfsm_subs.h, converting
all of them to procedures in nfsm_subs.c.

Add a nfsm_info structure to track the persistent state that the code
depends on, and remove all related local variables from the other bits
of the NFS code.

4 years agorelease engineering: record 2.3.2 in subvers
Simon Schubert [Thu, 16 Jul 2009 22:10:18 +0000 (00:10 +0200)]
release engineering: record 2.3.2 in subvers

4 years agostdio.h: declare snprintf also for XSI 5
Simon Schubert [Thu, 16 Jul 2009 08:43:12 +0000 (10:43 +0200)]
stdio.h: declare snprintf also for XSI 5

We restricted declaration of snprintf and vsnprintf to C99, but it is
also part of XSI 5.

Noticed-by: hasso@
4 years agoNFS - create nfsm_subs.c, clean up externs
Matthew Dillon [Thu, 16 Jul 2009 15:19:14 +0000 (08:19 -0700)]
NFS - create nfsm_subs.c, clean up externs

* Move nfsm_*() procedures from nfs_subs.c to nfsm_subs.c

* Clean up externs improperly embedded in .c files.

4 years agodma: add required headers if they are not present
Simon Schubert [Thu, 16 Jul 2009 14:04:25 +0000 (16:04 +0200)]
dma: add required headers if they are not present

RFC2822 states that we must or should include the Date, Message-Id, and
From headers, so add them if they are not present in the message.

4 years agodma: use ANSI string continuations
Simon Schubert [Thu, 16 Jul 2009 13:23:44 +0000 (15:23 +0200)]
dma: use ANSI string continuations

4 years agodma: pass over the code and improve error handling
Simon Schubert [Thu, 16 Jul 2009 13:18:29 +0000 (15:18 +0200)]
dma: pass over the code and improve error handling

4 years agodma: clean up network code
Simon Schubert [Thu, 16 Jul 2009 12:08:22 +0000 (14:08 +0200)]
dma: clean up network code

- free memory where necessary
- don't just abort without error message
- don't bounce if we want to defer the message

4 years agodma: treat encrypted connections as secure
Simon Schubert [Thu, 16 Jul 2009 11:43:28 +0000 (13:43 +0200)]
dma: treat encrypted connections as secure

Users have to set the INSECURE config option to allow dma to send
plaintext passwords on login.  This commit allows dma to send plaintext
passwords through TLS connections even if the INSECURE config option is
not set.

The downside is that this allows a man-in-the-middle attack on the
password exchange.  The only solution to this is checking the server
certificate, but we don't do that (yet).

4 years agodma: properly close and free SSL connection state
Simon Schubert [Thu, 16 Jul 2009 11:40:12 +0000 (13:40 +0200)]
dma: properly close and free SSL connection state

4 years agodma: log mail queueing more thoroughly
Simon Schubert [Thu, 16 Jul 2009 11:31:11 +0000 (13:31 +0200)]
dma: log mail queueing more thoroughly

Directly log when a mail is accepted and not only when a delivery attempt
is made.

4 years agodma: note that we will have to clean up SSL state
Simon Schubert [Thu, 16 Jul 2009 10:52:00 +0000 (12:52 +0200)]
dma: note that we will have to clean up SSL state

4 years agodma: unconditionally use openssl
Simon Schubert [Thu, 16 Jul 2009 10:24:44 +0000 (12:24 +0200)]
dma: unconditionally use openssl

Drop HAVE_CRYPTO and unconditionally use openssl.  Dma is supposed to be
small and secure, so there is no way around openssl anyways.