dragonfly.git
5 years agohammer expand: Layer 1 formatting (step 2/2)
Michael Neumann [Wed, 15 Jul 2009 15:37:44 +0000 (17:37 +0200)]
hammer expand: Layer 1 formatting (step 2/2)

With this commit online HAMMER filesystem expansion is functional, but
highly experimental and might destroy your filesystem.

5 years agoMinor adjustment which does not change behaviour.
Michael Neumann [Wed, 15 Jul 2009 12:36:58 +0000 (14:36 +0200)]
Minor adjustment which does not change behaviour.

This has no effect because of the bzero(). Nevertheless it's
more logical to generate the crc after setting blocks_free to 0.

5 years agohammer expand: Layer 2 formatting (step 1.5/2)
Michael Neumann [Wed, 15 Jul 2009 11:58:39 +0000 (13:58 +0200)]
hammer expand: Layer 2 formatting (step 1.5/2)

5 years agoisdnd(8): Fix some NULL dereferences.
Sascha Wildner [Wed, 15 Jul 2009 10:56:15 +0000 (12:56 +0200)]
isdnd(8): Fix some NULL dereferences.

Taken-from: FreeBSD

5 years agopipes - set kern.pipe.mpsafe default to 1.
Matthew Dillon [Wed, 15 Jul 2009 06:23:55 +0000 (23:23 -0700)]
pipes - set kern.pipe.mpsafe default to 1.

Enable MPSAFE operation on pipes by default.

5 years agoWhitespace cleanup
Matthew Dillon [Wed, 15 Jul 2009 06:09:25 +0000 (23:09 -0700)]
Whitespace cleanup

5 years agoNFS - Make the NFS read-ahead defaults & limits more generous.
Matthew Dillon [Wed, 15 Jul 2009 06:00:52 +0000 (23:00 -0700)]
NFS - Make the NFS read-ahead defaults & limits more generous.

5 years agoundo - Add <sys/param.h> to get MAXPATHLEN
Matthew Dillon [Wed, 15 Jul 2009 03:19:13 +0000 (20:19 -0700)]
undo - Add <sys/param.h> to get MAXPATHLEN

Reported-by: corecode
5 years agoLWKT - Make sure an exiting thread is not sitting on a tsleep queue.
Matthew Dillon [Wed, 15 Jul 2009 03:09:41 +0000 (20:09 -0700)]
LWKT - Make sure an exiting thread is not sitting on a tsleep queue.

5 years agoLWKT - Rename lwkt_yield_quick() to a more appropriate splz_check().
Matthew Dillon [Wed, 15 Jul 2009 03:05:51 +0000 (20:05 -0700)]
LWKT - Rename lwkt_yield_quick() to a more appropriate splz_check().

5 years agoMPSAFE - tsleep_interlock, BUF/BIO, cluster, swap_pager.
Matthew Dillon [Wed, 15 Jul 2009 02:31:18 +0000 (19:31 -0700)]
MPSAFE - tsleep_interlock, BUF/BIO, cluster, swap_pager.

* tsleep_interlock()/tsleep() could miss wakeups during periods of
  heavy cpu activity.  What would happen is code inbetween the two
  calls would try to send an IPI (say, issue a wakeup()), but while
  sending the IPI the kernel would be forced to process incoming IPIs
  synchronous to avoid a deadlock.

  The new tsleep_interlock()/tsleep() code adds another TAILQ_ENTRY to
  the thread structure allowing tsleep_interlock() to formally place
  the thread on the appropriate sleep queue without having to deschedule
  the thread.  Any wakeup which occurs between the interlock and the
  real tsleep() call will remove the thread from the queue and the
  later tsleep() call will recognize this and simply return without sleeping.

  The new tsleep() call requires PINTERLOCKED to be passed to tsleep
  so tsleep() knows that the thread has already been placed on a sleep
  queue.

* Continue making BUF/BIO MPSAFE.  Remove B_ASYNC and B_WANT from buf->b_flag
  and add a new bio->bio_flags field to the bio.  Add BIO_SYNC, BIO_WANT,
  and BIO_DONE.  Use atomic_cmpset_int() (aka cmpxchg) to interlock
  biodone() against biowait().

  vn_strategy() and dev_dstrategy() call semantics now require that
  synchronous BIO's install a bio_done function and set BIO_SYNC in
  the bio.

* Clean up the cluster code a bit.

* Redo the swap_pager code.  Instead of issuing I/O during the collection,
  which depended on critical sections to avoid races in the cluster append,
  we now build the entire collection first and then dispatch the I/O.
  This allows us to use only async completion for the BIOs, instead of
  a hybrid sync-or-async completion.

5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Wed, 15 Jul 2009 02:24:43 +0000 (19:24 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Wed, 15 Jul 2009 02:23:34 +0000 (19:23 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agoMinor adjustments of recent commits to fix UP kernel build.
Matthew Dillon [Wed, 15 Jul 2009 02:23:01 +0000 (19:23 -0700)]
Minor adjustments of recent commits to fix UP kernel build.

5 years agoFix some typos in manpages.
Sascha Wildner [Wed, 15 Jul 2009 02:09:19 +0000 (04:09 +0200)]
Fix some typos in manpages.

5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Michael Neumann [Tue, 14 Jul 2009 17:30:15 +0000 (19:30 +0200)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agohammer expand: Do not assume sequential vol_no's
Michael Neumann [Tue, 14 Jul 2009 17:29:13 +0000 (19:29 +0200)]
hammer expand: Do not assume sequential vol_no's

5 years agoFix randomly seen problems with linking C++ programs.
Hasso Tepper [Tue, 14 Jul 2009 16:14:15 +0000 (19:14 +0300)]
Fix randomly seen problems with linking C++ programs.

Binutils 2.17 supports COMDAT groups and .nsubspa comdat option. It should
fix randomly seen linking errors like:

`.gnu.linkonce.t.something' referenced in section `.gnu.linkonce.r.something'
of some_object: defined in discarded section `.gnu.linkonce.t.something'
of some_object.

Digged-out-by: corecode@
5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Michael Neumann [Tue, 14 Jul 2009 14:01:40 +0000 (16:01 +0200)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agoExpand HAMMER filesystem step 1/2
Michael Neumann [Tue, 14 Jul 2009 13:55:02 +0000 (15:55 +0200)]
Expand HAMMER filesystem step 1/2

Format the volume and increase other volumes' vol_count field.
The space of the new volume is not yet given to the filesystem (that's step 2).

Example:

newfs_hammer -L TEST /dev/da0
mount_hammer /dev/da0 /hammer
hammer expand /hammer /dev/da1
umount /hammer
mount_hammer /dev/da0:/dev/da1 /hammer

# the following fails (wrong number of volumes)
mount_hammer /dev/da0 /hammer

5 years agoFix typos in mse(4) and ppp(8) manpages: compliment -> complement.
Sascha Wildner [Tue, 14 Jul 2009 12:54:36 +0000 (14:54 +0200)]
Fix typos in mse(4) and ppp(8) manpages: compliment -> complement.

5 years agoShuffle IPI handlers to the last two blocks of the IDT.
Sepherosa Ziehau [Mon, 13 Jul 2009 13:44:11 +0000 (21:44 +0800)]
Shuffle IPI handlers to the last two blocks of the IDT.

Relative position of the IPI handlers is kept.  This gives us
more contiguous free IDT vectors.

5 years agoAdd age(4) to GENERIC and LINT
Sepherosa Ziehau [Mon, 13 Jul 2009 06:10:30 +0000 (14:10 +0800)]
Add age(4) to GENERIC and LINT

5 years agoAdd ae(4) manpage
Sepherosa Ziehau [Mon, 13 Jul 2009 06:06:44 +0000 (14:06 +0800)]
Add ae(4) manpage

Submitted-by: Alexander Polakov <polachok@gmail.com>
Obtained-from: FreeBSD

5 years agoAdd ae(4) to LINT and GENERIC
Sepherosa Ziehau [Mon, 13 Jul 2009 06:03:24 +0000 (14:03 +0800)]
Add ae(4) to LINT and GENERIC

5 years agoAdd ae(4) into module building
Sepherosa Ziehau [Mon, 13 Jul 2009 05:51:23 +0000 (13:51 +0800)]
Add ae(4) into module building

5 years agoAdd driver for Attansic/Atheros L2 FastEthernet
Sepherosa Ziehau [Mon, 13 Jul 2009 05:45:25 +0000 (13:45 +0800)]
Add driver for Attansic/Atheros L2 FastEthernet

Submitted-by: Alexander Polakov <polachok@gmail.com> w/ modification
Obtained-from: FreeBSD

5 years agolapic_init() -> lapic_map()
Sepherosa Ziehau [Sun, 12 Jul 2009 08:05:49 +0000 (16:05 +0800)]
lapic_init() -> lapic_map()

5 years agoRemove the distribute, redistribute and distributeworld targets.
Sascha Wildner [Tue, 14 Jul 2009 12:01:34 +0000 (14:01 +0200)]
Remove the distribute, redistribute and distributeworld targets.

We don't split things into different distributions and none of this
was ever used.

Pointed-out-by: pavalos
5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Tue, 14 Jul 2009 10:36:06 +0000 (03:36 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agotsleep() - Use PINTERLOCKED in msleep() and serialized_sleep().
Matthew Dillon [Tue, 14 Jul 2009 10:34:56 +0000 (03:34 -0700)]
tsleep() - Use PINTERLOCKED in msleep() and serialized_sleep().

5 years agotermios.h: Expose tcgetsid(3) function.
Stathis Kamperis [Wed, 1 Jul 2009 20:49:43 +0000 (23:49 +0300)]
termios.h: Expose tcgetsid(3) function.

Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1419>
Reviewed-by: hasso@, corecode@
5 years agotsleep() - Add PINTERLOCKED flag to catch edge case.
Matthew Dillon [Tue, 14 Jul 2009 10:14:33 +0000 (03:14 -0700)]
tsleep() - Add PINTERLOCKED flag to catch edge case.

When the tsleep_interlock() + UNLOCK + tsleep() combination is used it is
possible for an incoming wakeup IPI to be processed even if the combination
is used within a critical section, because operations inbetween the two
may send an IPI.  Under heavy loads sending an IPI can force incoming IPIs
to be processed synchronously to avoid deadlocks.

It is also possible for tsleep itself to create this condition when it
releases the user process schedule prior to descheduling itself.

PINTERLOCKED causes tsleep to check whether the bit set by tsleep_interlock()
is still set.  If it is not set we simply return without sleeping.

5 years agoHAMMER - new hammer_lock code, fix mplock bug in last commit, mpsafe getattr.
Matthew Dillon [Tue, 14 Jul 2009 07:14:12 +0000 (00:14 -0700)]
HAMMER - new hammer_lock code, fix mplock bug in last commit, mpsafe getattr.

* Fix a mplock bug in the last commit that can cause a panic in hammer_read.
  The mplock check code wasn't setting up the hammer transaction properly.

* VMP_GETATTR is now set on all HAMMER vnodes.  If sysctl vfs.getattr_mpsafe=1
  all fstat() operations will run without the MP lock.

* Rewrite HAMMER's lock code, making it MPSAFE.  The new lock code uses
  atomic_cmpset_int().

5 years agoMPSAFE - Regenerate system calls for MPSAFE changes.
Matthew Dillon [Tue, 14 Jul 2009 07:08:11 +0000 (00:08 -0700)]
MPSAFE - Regenerate system calls for MPSAFE changes.

5 years agoMPSAFE - Implement sysctl vfs.getattr_mpsafe, make fstat() MPSAFE
Matthew Dillon [Tue, 14 Jul 2009 06:02:21 +0000 (23:02 -0700)]
MPSAFE - Implement sysctl vfs.getattr_mpsafe, make fstat() MPSAFE

Make fstat() MPSAFE.  Adjust fileops->fo_stat functions to be MPSAFE as
necessary (uipc socket stat mainly).

5 years agoMPSAFE - Document a few procedures as MPSAFE (non-operational)
Matthew Dillon [Tue, 14 Jul 2009 05:58:59 +0000 (22:58 -0700)]
MPSAFE - Document a few procedures as MPSAFE (non-operational)

5 years agoMPSAFE - system calls set_tls_area() and get_tls_area() are MPSAFE
Matthew Dillon [Tue, 14 Jul 2009 05:26:53 +0000 (22:26 -0700)]
MPSAFE - system calls set_tls_area() and get_tls_area() are MPSAFE

5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Tue, 14 Jul 2009 03:49:10 +0000 (20:49 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agoHAMMER - Add MPSAFE suppor for hammer_vop_read().
Matthew Dillon [Tue, 14 Jul 2009 03:46:45 +0000 (20:46 -0700)]
HAMMER - Add MPSAFE suppor for hammer_vop_read().

This is still a bit of a hack.  If vfs.read_mpsafe is set HAMMER will
run MPSAFE for reads from regular files which are cached in the buffer
cache.  Data which is not cached will fall-back to getting the MP lock.

At the moment enabling this operation will cause atime to not get updated
on fully cached files, because the rest of HAMMER is not MPSAFE yet so I
cannot modify the internal hammer_inode state.

5 years agoMPSAFE - Add read() and write() path MPSAFE support, and more.
Matthew Dillon [Tue, 14 Jul 2009 03:41:30 +0000 (20:41 -0700)]
MPSAFE - Add read() and write() path MPSAFE support, and more.

* Add sysctl vfs.read_mpsafe, vfs.write_mpsafe, and vfs.getattr_mpsafe.
  Only vfs.read_mpsafe is currently implemented, and only for HAMMER
  filesystems.

* read() and write() will now call VOP_READ()/VOP_WRITE() without the
  MP lock if the vnode->v_flag says it is ok to do so.

* read() and write() now serialize reads and writes which depend on the
  file offset stored in the fp, when the concurrent operations share the
  same fp.

* Add vnode flags VMP_READ, VMP_WRITE, VMP_GETATTR.

* Add vnode flag VNOTSEEKABLE indicating that fp->f_offset will never be
  used and no serialization is needed (which e.g. can mess up read()'s
  blocking devices such as ttys).

* Correct bug in FIONREAD related to the data field being too small.

5 years agomxge: Clean up Makefile a little more. v2.3.2
Sascha Wildner [Tue, 14 Jul 2009 02:04:49 +0000 (04:04 +0200)]
mxge: Clean up Makefile a little more.

5 years agomxge: Add opt_inet.h to the Makefile.
Sascha Wildner [Tue, 14 Jul 2009 01:42:10 +0000 (03:42 +0200)]
mxge: Add opt_inet.h to the Makefile.

5 years agoCCMS - Correct bug, add #include <sys/spinlock2.h> to kern_ccms.c
Matthew Dillon [Tue, 14 Jul 2009 00:19:09 +0000 (17:19 -0700)]
CCMS - Correct bug, add #include <sys/spinlock2.h> to kern_ccms.c

5 years agoCCMS - bug in last commit, remove #include <sys/spinlock2.h> from ccms.h
Matthew Dillon [Tue, 14 Jul 2009 00:17:21 +0000 (17:17 -0700)]
CCMS - bug in last commit, remove #include <sys/spinlock2.h> from ccms.h

5 years agoNormalize the defines for the vnode flags (non-operational change).
Matthew Dillon [Mon, 13 Jul 2009 23:48:45 +0000 (16:48 -0700)]
Normalize the defines for the vnode flags (non-operational change).

5 years agoCCMS - Make the cache coherency locks MPSAFE.
Matthew Dillon [Mon, 13 Jul 2009 23:44:51 +0000 (16:44 -0700)]
CCMS - Make the cache coherency locks MPSAFE.

5 years agoBUF/BIO - MPSAFE work on core buffer cache routines.
Matthew Dillon [Mon, 13 Jul 2009 22:57:53 +0000 (15:57 -0700)]
BUF/BIO - MPSAFE work on core buffer cache routines.

Do initial MPSAFE work on getblk(), bread(), brelse(), bqrelse(),
biowait(), and friends.  Use get_mplock()/rel_mplock() in areas not
yet converted.

Add a flags argument to findblk() and have it return a locked buffer
cache buffer by default.  Callers may request that the buffer be
locked non-blocking, or that it not be locked at all.

Adjust all callers of findblk() for those cases where an unlocked
buffer is desired to lock and re-check the returned buffer's parameters,
since otherwise it can change out from under the caller whether a critical
section is used or not (for SMP).

5 years agotelnet: Fix a bug (really use the return value of tty_istrapsig()).
Sascha Wildner [Mon, 13 Jul 2009 22:03:33 +0000 (00:03 +0200)]
telnet: Fix a bug (really use the return value of tty_istrapsig()).

5 years agoExpand HAMMER filesystem stubs
Michael Neumann [Mon, 13 Jul 2009 21:40:38 +0000 (23:40 +0200)]
Expand HAMMER filesystem stubs

5 years agopipe - add required critical section around tsleep_interlock() call.
Matthew Dillon [Mon, 13 Jul 2009 21:11:11 +0000 (14:11 -0700)]
pipe - add required critical section around tsleep_interlock() call.

5 years agobuffer cache - protect bufqueues[] with the bufspin spinlock.
Matthew Dillon [Mon, 13 Jul 2009 20:41:12 +0000 (13:41 -0700)]
buffer cache - protect bufqueues[] with the bufspin spinlock.

5 years agomxge.4: Some small changes.
Sascha Wildner [Mon, 13 Jul 2009 19:16:16 +0000 (21:16 +0200)]
mxge.4: Some small changes.

* We use local time line, not FreeBSD's.

* Kick unneeded .Pp.

* First appeared in 2.3.

5 years agoMerge branch 'mxge'
Aggelos Economopoulos [Mon, 13 Jul 2009 18:47:37 +0000 (21:47 +0300)]
Merge branch 'mxge'

5 years agomxge.4: sync with the status of the driver in DragonFly
Aggelos Economopoulos [Mon, 13 Jul 2009 18:46:35 +0000 (21:46 +0300)]
mxge.4: sync with the status of the driver in DragonFly

5 years agomxge: import mxge.4 from FreeBSD
Aggelos Economopoulos [Mon, 13 Jul 2009 18:45:09 +0000 (21:45 +0300)]
mxge: import mxge.4 from FreeBSD

5 years agoDocument pmap_qremove() as being MPSAFE.
Matthew Dillon [Mon, 13 Jul 2009 18:39:03 +0000 (11:39 -0700)]
Document pmap_qremove() as being MPSAFE.

5 years agoMake getpbuf(), trypbuf(), and relpbuf() MPSAFE.
Matthew Dillon [Mon, 13 Jul 2009 18:38:09 +0000 (11:38 -0700)]
Make getpbuf(), trypbuf(), and relpbuf() MPSAFE.

5 years agoMake biowait() MPSAFE.
Matthew Dillon [Mon, 13 Jul 2009 18:37:35 +0000 (11:37 -0700)]
Make biowait() MPSAFE.

5 years agotelnet.1: Remove unnecessary .Pp
Sascha Wildner [Mon, 13 Jul 2009 18:07:54 +0000 (20:07 +0200)]
telnet.1: Remove unnecessary .Pp

5 years agopriv.9: Update for recent changes.
Sascha Wildner [Mon, 13 Jul 2009 17:58:58 +0000 (19:58 +0200)]
priv.9: Update for recent changes.

Approved-by: mneumann
5 years agobuffer cache - Control all access to the buf red-black trees with vp->v_token
Matthew Dillon [Mon, 13 Jul 2009 17:55:24 +0000 (10:55 -0700)]
buffer cache - Control all access to the buf red-black trees with vp->v_token

Access to the buffer cache's RB trees is now controlled via vp->v_token
instead of a critical section.  We still hold the BGL but this is not
quite as simple as it seems because an interrupt calling biodone() on a
B_INVAL buffer may now potentially block, where as it would not have before.
The buffer is locked.

5 years agolwkt_token - Add ASSERT_LWKT_TOKEN_HELD(token) macro.
Matthew Dillon [Mon, 13 Jul 2009 17:53:03 +0000 (10:53 -0700)]
lwkt_token - Add ASSERT_LWKT_TOKEN_HELD(token) macro.

5 years agobio_track - fix bug in last commit (the negative count assertion was wrong)
Matthew Dillon [Mon, 13 Jul 2009 17:42:34 +0000 (10:42 -0700)]
bio_track - fix bug in last commit (the negative count assertion was wrong)

5 years agoMake operations on struct bio_track MPSAFE.
Matthew Dillon [Mon, 13 Jul 2009 16:30:22 +0000 (09:30 -0700)]
Make operations on struct bio_track MPSAFE.

Use atomic ops to make reference counting and waiting on bio_track structures
MPSAFE.

5 years agomxge: use ether_input_chain()
Aggelos Economopoulos [Mon, 13 Jul 2009 15:12:38 +0000 (18:12 +0300)]
mxge: use ether_input_chain()

5 years agomxge: call bus_setup_intr() after the if serializer has been set
Aggelos Economopoulos [Mon, 13 Jul 2009 15:11:10 +0000 (18:11 +0300)]
mxge: call bus_setup_intr() after the if serializer has been set

5 years agomxge: properly initialize m_pkthdr.len as well
Aggelos Economopoulos [Mon, 13 Jul 2009 15:10:01 +0000 (18:10 +0300)]
mxge: properly initialize m_pkthdr.len as well

5 years agomxge: use normal ethernet mtu by default
Aggelos Economopoulos [Mon, 13 Jul 2009 15:05:50 +0000 (18:05 +0300)]
mxge: use normal ethernet mtu by default

We don't properly support jumbo frames yet, so
change the default mtu

5 years agomxge: properly remove the sysctls
Aggelos Economopoulos [Mon, 13 Jul 2009 15:04:19 +0000 (18:04 +0300)]
mxge: properly remove the sysctls

5 years agovnode - move v_pollinfo.vpi_token to v_token
Matthew Dillon [Mon, 13 Jul 2009 14:57:26 +0000 (07:57 -0700)]
vnode - move v_pollinfo.vpi_token to v_token

* Rename the lwkt_token used for the vnode's v_pollinfo for general use by
  the vnode.  This token will soon be used to lock the buffer cache.

5 years agopipe - fix UP build error.
Matthew Dillon [Mon, 13 Jul 2009 14:40:48 +0000 (07:40 -0700)]
pipe - fix UP build error.

Reported-by: Hasso Tepper <hasso@estpak.ee>
5 years agoSYSPERF - update pipe1, pipe2
Matthew Dillon [Mon, 13 Jul 2009 05:44:08 +0000 (22:44 -0700)]
SYSPERF - update pipe1, pipe2

* pipe1 now does a 1-second timing run.

* pipe2 now does a 2-second timing run, just so it runs just a tad longer.

5 years agoMerge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly
Matthew Dillon [Mon, 13 Jul 2009 05:24:54 +0000 (22:24 -0700)]
Merge branch 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly

5 years agopipe - replace use of DELAY() with a better solution, add features.
Matthew Dillon [Mon, 13 Jul 2009 05:14:43 +0000 (22:14 -0700)]
pipe - replace use of DELAY() with a better solution, add features.

* Use the new tsc functions to poll for new read data in a pipe for a short
  period of time on a SMP box.  This greatly increases the odds of a pipe
  writer on one cpu being able to pipeline data to a reader on another cpu
  without having to use an IPI or tsleep/wakeup.

  For the pipe1 test this brings the synchronous communications path
  over a pipe (Awrite, Bread, Bwrite, Aread) down from 7uS to around 2uS.

  For the pipe2 test this value greatly reduces the number of IPIs
  and improves bandwidth by a few hundred megabytes/sec (the old DELAY
  did the same thing so there is no change for the pipe2 test).

* Add sysctl kern.pipe.delay which defaults to 5000 nanoseconds (5uS).
  This is the maximum a pipe reader will wait for additional data before
  falling back to tsleep/wakeup (and related ipis).  pipe_delay may be
  set to 0 to disable the function.  I value of at least 3000 is
  recomended.  Pipelining large buffers efficiently requires a higher value,
  say up to 8000 or so.

* Allow kern.pipe.mpsafe to be set to 2 which adds a predictive wakeup
  when a writer is found to be stalled.  This currently has no significant
  effect on operations due to token collisions.

* Add statistics: kern.pipe.wblocked and kern.pipe.rblocked, counting
  the number of times a pipe blocks in "pipewr" or "piperd".

* Fix MP races in pipe_ioctl().

5 years agoclocks - Add fine-grained spin delay function via TSC
Matthew Dillon [Mon, 13 Jul 2009 05:12:50 +0000 (22:12 -0700)]
clocks - Add fine-grained spin delay function via TSC

Add int64_t target = tsc_get_target(ns) and tsc_test_target(target).
See routines for details.  These functions are available when the system
supports an extremely fine-grained counter such as a TSC and may be used
to generate finely tuned delays.

5 years agolibtelnet: Fix some mis-usage of NULL and raise WARNS to 2.
Sascha Wildner [Mon, 13 Jul 2009 02:41:45 +0000 (04:41 +0200)]
libtelnet: Fix some mis-usage of NULL and raise WARNS to 2.

5 years agoOops! Actually install /usr/libexec/telnetd.
Peter Avalos [Mon, 13 Jul 2009 02:31:54 +0000 (16:31 -1000)]
Oops!  Actually install /usr/libexec/telnetd.

Noticed-by: swildner
5 years agobootpgw: Use err(3).
Peter Avalos [Mon, 13 Jul 2009 02:23:04 +0000 (16:23 -1000)]
bootpgw:  Use err(3).

Obtained-from: FreeBSD

5 years agopipe - Fix piperd/pipewr deadlock in mpsafe case
Matthew Dillon [Mon, 13 Jul 2009 01:37:46 +0000 (18:37 -0700)]
pipe - Fix piperd/pipewr deadlock in mpsafe case

* Fix a bug where piperd and pipewr could be entered simultaniously
  by the reader and writer and neither gets woken up.

* Redo the hysteresis slightly to reduce IPIs even more.

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

5 years agopipe - Make pipe r/w MPSAFE, add kern.pipe.mpsafe (disabled by default)
Matthew Dillon [Sun, 12 Jul 2009 22:42:43 +0000 (15:42 -0700)]
pipe - Make pipe r/w MPSAFE, add kern.pipe.mpsafe (disabled by default)

* Make pipe_read and pipe_write MPSAFE.

* Add a sysctl kern.pipe.mpsafe which defaults to disabled.  Set to
  1 to test the MPSAFE pipe code.  The expectation is that it will be
  set to 1 for the release.  Currently only pipe_read and pipe_write
  is MPSAFE.

* The new code in mpsafe mode also implements a streaming optimization
  to avoid unnecessary tsleep/wakeup/IPIs.  If the reader and writer
  are operating on different cpus this feature results in more uniform
  performance across a wide swath of block sizes.

* The new code currently does not use any page mapping optimizations.
  Page table overhead is fairly nasty on SMP so for now we rely on cpu
  caches and do an extra copy.  This means the code is tuned better for
  more recent cpus and tuned worse for older cpus.  At least for now.

OLD pipe code:  dwe = dwrite_enable, sfb = dwrite_sfbuf mode
NEW pipe code:  mpsafe = 0 (gets bgl) or 1 (does not use bgl)

Using /usr/src/test/sysperf/pipe2.c to test, all results in MBytes/sec

  8K  16K  32K  64K 128K 256K
---- ---- ---- ---- ---- ----
OLD dwe=0 1193 1167 1555 1525 1473 1477
OLD dwe=1 sfb=0  856    1458 2307 2182 2275 2307
OLD dwe=1 sfb=1  955 1537 2300 2356 2363 2708
OLD dwe=1 sfb=2  939 1561 2367 2477 2379 2360

NEW mpsafe=0 1150 1369 1536 1591 1358 1270
NEW mpsafe=1 2133 2319 2375 2387 2396 2418

5 years agopriv: Finally get completely rid of PRISON_ROOT flag.
Michael Neumann [Sun, 12 Jul 2009 22:38:20 +0000 (00:38 +0200)]
priv: Finally get completely rid of PRISON_ROOT flag.

This means that from now on, what is allowed within a jail
is purely defined in function prison_priv_check().

5 years agopriv: Define and use PRIV_PROC_TRESPASS
Michael Neumann [Sun, 12 Jul 2009 22:35:39 +0000 (00:35 +0200)]
priv: Define and use PRIV_PROC_TRESPASS

5 years agopriv: Define and use PRIV_SETHOSTNAME
Michael Neumann [Sun, 12 Jul 2009 22:16:27 +0000 (00:16 +0200)]
priv: Define and use PRIV_SETHOSTNAME

5 years agopriv: Define and use PRIV_VARSYM_SYS
Michael Neumann [Sun, 12 Jul 2009 22:08:56 +0000 (00:08 +0200)]
priv: Define and use PRIV_VARSYM_SYS

5 years agoSimplify expressions
Michael Neumann [Sun, 12 Jul 2009 22:01:43 +0000 (00:01 +0200)]
Simplify expressions

5 years agopriv: Define and use PRIV_HAMMER_IOCTL
Michael Neumann [Sun, 12 Jul 2009 21:48:14 +0000 (23:48 +0200)]
priv: Define and use PRIV_HAMMER_IOCTL

5 years agopriv: Use PRIV_DEBUG_UNPRIV in procfs
Michael Neumann [Sun, 12 Jul 2009 21:46:10 +0000 (23:46 +0200)]
priv: Use PRIV_DEBUG_UNPRIV in procfs

5 years agopriv: Use PRIV_VFS_SETGID
Michael Neumann [Sun, 12 Jul 2009 21:16:57 +0000 (23:16 +0200)]
priv: Use PRIV_VFS_SETGID

Note that in case of UFS, the priv_cred_check() call will now
succeed in a jail, whereas it failed before.

5 years agopriv: Sync ext2_quotactl() with ufs_quotactl() implementation
Michael Neumann [Sun, 12 Jul 2009 20:59:09 +0000 (22:59 +0200)]
priv: Sync ext2_quotactl() with ufs_quotactl() implementation

5 years agopriv: Use PRIV_VFS_CHMOD and PRIV_VFS_CHOWN
Michael Neumann [Sun, 12 Jul 2009 20:54:05 +0000 (22:54 +0200)]
priv: Use PRIV_VFS_CHMOD and PRIV_VFS_CHOWN

5 years agomath.3: Mention f{max,min,dim}.
Stathis Kamperis [Sun, 12 Jul 2009 20:06:23 +0000 (23:06 +0300)]
math.3: Mention f{max,min,dim}.

5 years agolibm: Import fdim{,f,l} functions from FreeBSD.
Stathis Kamperis [Mon, 1 Jun 2009 10:31:11 +0000 (13:31 +0300)]
libm: Import fdim{,f,l} functions from FreeBSD.

5 years agolibm: Import fmax{,f,l} and fmin{,f,l} functions from FreeBSD.
Stathis Kamperis [Sun, 31 May 2009 20:35:54 +0000 (23:35 +0300)]
libm: Import fmax{,f,l} and fmin{,f,l} functions from FreeBSD.

5 years agopriv: Refactor UFS quota permissions
Michael Neumann [Sun, 12 Jul 2009 17:58:16 +0000 (19:58 +0200)]
priv: Refactor UFS quota permissions

5 years agoRemove duplicate line
Michael Neumann [Sun, 12 Jul 2009 17:34:44 +0000 (19:34 +0200)]
Remove duplicate line

5 years agopriv: Use PRIV_VFS_CHMOD and PRIV_VFS_CHOWN
Michael Neumann [Sun, 12 Jul 2009 17:30:58 +0000 (19:30 +0200)]
priv: Use PRIV_VFS_CHMOD and PRIV_VFS_CHOWN

5 years agopriv: Introduce and use PRIV_VFS_SETATTR in xxx_setattr()
Michael Neumann [Sun, 12 Jul 2009 17:20:09 +0000 (19:20 +0200)]
priv: Introduce and use PRIV_VFS_SETATTR in xxx_setattr()

Replace PRIV_ROOT, PRISON_ROOT combination in xxx_setattr() function
(e.g. ext2fs_setattr()) of several filesystems with PRIV_VFS_SETATTR.

5 years agopriv: Use PRIV_NETINET_RAW
Michael Neumann [Sun, 12 Jul 2009 16:51:29 +0000 (18:51 +0200)]
priv: Use PRIV_NETINET_RAW