dragonfly.git
16 years agoHAMMER 38E/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Sun, 27 Apr 2008 00:45:37 +0000 (00:45 +0000)]
HAMMER 38E/Many: Undo/Synchronization and crash recovery

* Fix a couple of deadlocks.

* Fix a kernel buffer cache exhaustion issue.

* Get the 'hammer prune' and 'hammer reblock' command working again.  The
  commands are now properly synchronized for crash recovery.

16 years agoHAMMER utilities: Misc documentation and new options.
Matthew Dillon [Sun, 27 Apr 2008 00:43:57 +0000 (00:43 +0000)]
HAMMER utilities: Misc documentation and new options.

* Add the -u <undoareasize> option.  This option allows the size of the
  undo FIFO buffer to be specified.

* Document missing newfs_hammer's options.

16 years agoRevert rev 1.40, which will cause deadlock, if task's function tries to
Sepherosa Ziehau [Sat, 26 Apr 2008 23:09:40 +0000 (23:09 +0000)]
Revert rev 1.40, which will cause deadlock, if task's function tries to
enqueue itself.

Approved-by: dillon@
16 years agoHAMMER 38E/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Sat, 26 Apr 2008 19:08:14 +0000 (19:08 +0000)]
HAMMER 38E/Many: Undo/Synchronization and crash recovery

* Clean up interlocks between the frontend and backend.

* Deal with the case where the backend needs to sync a record to disk that
  the frontend wishes to delete.  This basically just involves converting
  the record from a deleted in-memory record to a delete-on-disk record,
  so the synced record does not become visible to userland.

* Deal with the case when an inode is being destroyed where the backend
  wishes to delete an in-memory record without syncing it to disk.

* Document numerous special cases for future attention.

16 years agowi(4) depends on wlan(4)
Sepherosa Ziehau [Sat, 26 Apr 2008 14:11:06 +0000 (14:11 +0000)]
wi(4) depends on wlan(4)

16 years agoDon't do following optimization in udp_disconnect():
Sepherosa Ziehau [Sat, 26 Apr 2008 14:08:52 +0000 (14:08 +0000)]
Don't do following optimization in udp_disconnect():
Conditionally free cached pcb route entry by predicting new laddr.

During soclose() on a connected UDP socket, this optimization will cause
cached pcb route entry being freed on wrong CPU, since f{port,addr} have
been changed.

Fix comment in udp_connect().

16 years agoRemove old FreeBSD upgrade tools.
Sascha Wildner [Sat, 26 Apr 2008 09:49:50 +0000 (09:49 +0000)]
Remove old FreeBSD upgrade tools.

16 years agoFix compilation in tools/tools/crypto and fix some minor issues.
Sascha Wildner [Sat, 26 Apr 2008 09:19:10 +0000 (09:19 +0000)]
Fix compilation in tools/tools/crypto and fix some minor issues.

16 years agoHAMMER 38E/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Sat, 26 Apr 2008 08:02:17 +0000 (08:02 +0000)]
HAMMER 38E/Many: Undo/Synchronization and crash recovery

* Add record<->inode dependancies for file creation an deletion.  If a
  directory entry representing a new file is synced out, the file is also
  synced out at the same time, and vise-versa.

* Dirty reclaimed inodes are now forwarded to the flusher, which should
  prevent leaks of hammer_inode structures.  (Still needs work).

* Force finalization if the undo fifo becomes more then half full.
  This can currently break dependancies.  (Still needs work).

* Misc stabilization fixes to recent commits.

16 years agoHAMMER 38D/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Sat, 26 Apr 2008 02:54:00 +0000 (02:54 +0000)]
HAMMER 38D/Many: Undo/Synchronization and crash recovery

* The flusher now waits for I/O to complete at the appropriate points.

* Implement instant crash recovery.  The UNDO FIFO is scanned backwards
  and reapplied to the filesystem on mount.  There is still more work
  to do here, inode<->inode associations (e.g. directory entry vs file)
  are not yet bound together.

* Clean up I/O sequencing a lot and get rid of a ton of unnecessary flusher
  wakeups.

16 years agoHAMMER 38C/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Fri, 25 Apr 2008 21:49:49 +0000 (21:49 +0000)]
HAMMER 38C/Many: Undo/Synchronization and crash recovery

* Classify buffers as meta, undo, or data buffers, and collect them
  into separate lists so they can be flushed in the proper order.

* Make the META buffers and volume header flushed under HAMMERs direct
  control only, as part of the UNDO sequencing.

* Major work on the flusher thread.  Flush the various buffer classes in
  the correct order (the synchronization points are not yet coded, however).

* Update the volume header's UNDO fifo indices.

* Add a ton of sanity checks on buffer modifications and narrow the size
  of some of the UNDO records.

* Clean-up after loose IOs.  An IO can be loose when its ref count drops
  to zero and the kernel attempts to reclaim its bp.  We can't garbage
  collect the IO in the kernel bioops callback so we have to remember
  that the IO is now loose and do it later (in the flusher).

* Temporarily comment out an allocator iterator feature which we cannot
  do right now because it may result in new data allocations overwriting
  old deletions which are still subject to UNDO.

16 years agoHAMMER 38B/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Thu, 24 Apr 2008 22:05:13 +0000 (22:05 +0000)]
HAMMER 38B/Many: Undo/Synchronization and crash recovery

* Properly requeue an inode synchronization when BIOs are present on
  ip->bio_alt_list.  Fixes a sync stall.

16 years agoHAMMER 38A/Many: Undo/Synchronization and crash recovery
Matthew Dillon [Thu, 24 Apr 2008 21:20:33 +0000 (21:20 +0000)]
HAMMER 38A/Many: Undo/Synchronization and crash recovery

* Separate all frontend operations from all backend media synchronization.
  The frontend VNOPs make all changes in-memory and in the frontend
  buffer cache.  The backend buffer cache used to manage meta-data is
  not touched.

  - In-memory inode contains two copies of critical meta-data structures
  - In-memory record tree distinguishes between records undergoing
    synchronization and records not undergoing synchronization.
  - Frontend buffer cache buffers are tracked to determine which ones
    to synchronize and which ones not to.
  - Deletions are cached in-memory.  Any number of file truncations
    simply caches the lowest truncation offset and on-media records
    beyond that point are ignored.  Record deletions are cached as
    a negative entry in the in-memory record tree until the backend
    can execute the operation on the media.
  - Frontend operations continue to have full, direct read access to
    the media.

* Backend synchronization to the disk media is able to take place
  simultaniously with frontend operations on the same inodes.  This
  will need some tuning but it basically works.

* In-memory records are no longer removed from the B-Tree when deleted.
  They are marked for deletion and removed when the last reference goes
  away.

* An Inode whos last reference is being released is handed over to the
  backend flusher for its final disposition.

* There are some bad hacks and debugging tests in this commit.  In particular
  when the backend needs to do a truncation it special-cases any
  negative entries it finds in the in-memory record tree.  Also, if a
  rename operation hits a deadlock it currently breaks atomicy.

* The transaction API has been simplified.  The frontend no longer allocates
  transaction ids.  Instead the backend does a full flush with a single
  transaction id (since that is the granularity the crash recovery code will
  have anyway).

16 years agoFix panics which can occur when killing a threaded program. lwp_exit()
Matthew Dillon [Thu, 24 Apr 2008 08:53:02 +0000 (08:53 +0000)]
Fix panics which can occur when killing a threaded program.  lwp_exit()
was being called without the BGL from userret().  It needs the BGL.

16 years agoMake description of -C option more clear: describe what option does first.
Thomas Nikolajsen [Wed, 23 Apr 2008 22:09:07 +0000 (22:09 +0000)]
Make description of -C option more clear: describe what option does first.
Update usage() to version in fdisk.8.

16 years agoAdd HAMMER to disklabel.8
Thomas Nikolajsen [Wed, 23 Apr 2008 21:59:22 +0000 (21:59 +0000)]
Add HAMMER to disklabel.8
Add cross references to mount_hammer.8 and hammer.8

When here add 'B' (Byte) to comment part of disklabel output, to make unit explicit.

16 years agoAdd hammer_flusher.c, to make kernels with options HAMMER build.
Thomas Nikolajsen [Wed, 23 Apr 2008 21:06:19 +0000 (21:06 +0000)]
Add hammer_flusher.c, to make kernels with options HAMMER build.

16 years agoFix two A-list corruption cases.
Matthew Dillon [Wed, 23 Apr 2008 17:21:08 +0000 (17:21 +0000)]
Fix two A-list corruption cases.

When a meta-element indicates the next layer is all-allocated or all-free,
the next layer is allowed to contain garbage.  The allocator must skip an
all-allocated layer.

Similarly when a free recurses through an all-allocated layer the next layer
must be initialized so we can recurse down into it.

Reported-by: Jonathan Lemon <jlemon@cisco.com>
16 years agoAdd support for cmx(4) devices.
Hasso Tepper [Wed, 23 Apr 2008 09:44:07 +0000 (09:44 +0000)]
Add support for cmx(4) devices.

16 years agoAdd a driver for Omnikey CardMan 4040 smartcard reader - cmx(4).
Hasso Tepper [Wed, 23 Apr 2008 08:57:10 +0000 (08:57 +0000)]
Add a driver for Omnikey CardMan 4040 smartcard reader - cmx(4).

Obtained-from: FreeBSD

16 years agoRegenerate.
Hasso Tepper [Wed, 23 Apr 2008 08:45:05 +0000 (08:45 +0000)]
Regenerate.

16 years agoAdd OMNIKEY CardMan 4040 smartcard reader.
Hasso Tepper [Wed, 23 Apr 2008 08:34:30 +0000 (08:34 +0000)]
Add OMNIKEY CardMan 4040 smartcard reader.

16 years ago* Remove the SINGLEUSE feature for telldir(), it does not conform to the
Matthew Dillon [Tue, 22 Apr 2008 21:29:42 +0000 (21:29 +0000)]
* Remove the SINGLEUSE feature for telldir(), it does not conform to the
  Open Group specification.

* Add a mutex around the ddloc hash table.  Note that NetBSD implemented
  a per-dirp list but telldir/seekdir performance just isn't an issue
  for these functions so stick with the global hash table.

* Reuse the ddloc for a previous seekdir() when calling telldir() just
  after a seekdir(), instead of allocating a new one.

* rewinddir() now cleans up any ddloc's for the dirp.

Reported-by: Gary Stanley <sinknull@crater.dragonflybsd.org>
16 years agoFix a free() race due to a misplaced mutex unlock.
Matthew Dillon [Tue, 22 Apr 2008 19:45:05 +0000 (19:45 +0000)]
Fix a free() race due to a misplaced mutex unlock.

16 years agoHAMMER 37/Many: Add a flush helper thread, clean up some inconsistencies.
Matthew Dillon [Tue, 22 Apr 2008 19:00:15 +0000 (19:00 +0000)]
HAMMER 37/Many: Add a flush helper thread, clean up some inconsistencies.

This patch generally cleans up transaction id inconsistencies betwen data
and meta-data by syncing the data and inode in a single transaction.

* Change the I/O path for write strategy calls.  Queue the BIO's to the
  flush helper thread instead of directly updating the media.

* We no longer try to sync individual buffers.  If the kernel wants to
  sync a dirty buffer, we sync the whole file to minimize inode updates.

16 years agoFix some IO sequencing performance issues and reformulate the strategy
Matthew Dillon [Tue, 22 Apr 2008 18:46:54 +0000 (18:46 +0000)]
Fix some IO sequencing performance issues and reformulate the strategy
we use to deal with potential buffer cache deadlocks.  Generally speaking
try to remove roadblocks in the vn_strategy() path.

* Remove buf->b_tid (HAMMER no longer needs it)

* Replace IO_NOWDRAIN with IO_NOBWILL, requesting that bwillwrite() not
  be called.  Used by VN to try to avoid deadlocking.  Remove B_NOWDRAIN.

* No longer block in bwrite() or getblk() when we have a lot of dirty
  buffers.   getblk() in particular needs to be callable by filesystems
  to drain dirty buffers and we don't want to deadlock.

* Improve bwillwrite() by having it wake up the buffer flusher at 1/2 the
  dirty buffer limit but not block, and then block if the limit is reached.
  This should smooth out flushes during heavy filesystem activity.

16 years agoPass the current LWP to sigexit() instead of the current process. Remove
Matthew Dillon [Mon, 21 Apr 2008 15:47:58 +0000 (15:47 +0000)]
Pass the current LWP to sigexit() instead of the current process.  Remove
the left-over hack in sigexit() that was using the first LWP instead of
the one that actually caused the core dump.

This way a GDB of the core will properly observe the thread that actually
caused the core-dump.

16 years agoDive the scheduler to implement the yield function. For the moment it just
Matthew Dillon [Mon, 21 Apr 2008 15:24:47 +0000 (15:24 +0000)]
Dive the scheduler to implement the yield function.  For the moment it just
does the same thing it did before.

16 years agoAdd an interlock for certain usb task operations.
Matthew Dillon [Mon, 21 Apr 2008 15:23:22 +0000 (15:23 +0000)]
Add an interlock for certain usb task operations.

16 years agoAdd missing newline.
Sascha Wildner [Sun, 20 Apr 2008 22:24:53 +0000 (22:24 +0000)]
Add missing newline.

16 years agoIt's syslogd which calls fsync(), not syslog.conf.
Sascha Wildner [Sun, 20 Apr 2008 21:14:39 +0000 (21:14 +0000)]
It's syslogd which calls fsync(), not syslog.conf.

Noticed-by: hasso
16 years agoFix function name in message.
Sascha Wildner [Sun, 20 Apr 2008 19:26:53 +0000 (19:26 +0000)]
Fix function name in message.

16 years agoNeither rand48 nor _rand48 are functions.
Sascha Wildner [Sun, 20 Apr 2008 19:21:42 +0000 (19:21 +0000)]
Neither rand48 nor _rand48 are functions.

16 years agoAnother round of typo fixes (mostly in messages).
Sascha Wildner [Sun, 20 Apr 2008 13:44:26 +0000 (13:44 +0000)]
Another round of typo fixes (mostly in messages).

16 years agoThe historic and deprecated setgrfile() function never existed in
Sascha Wildner [Sat, 19 Apr 2008 10:08:05 +0000 (10:08 +0000)]
The historic and deprecated setgrfile() function never existed in
DragonFly.

Remove prototype and adjust manual page (now only mentioned in
COMPATIBILITY as deprecated).

16 years agoAdd missing 'be'.
Sascha Wildner [Sat, 19 Apr 2008 09:33:32 +0000 (09:33 +0000)]
Add missing 'be'.

Reported-by: Robin Carey <robin_carey5@yahoo.co.uk>
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue991>

16 years agoa -> an
Sascha Wildner [Wed, 16 Apr 2008 23:22:48 +0000 (23:22 +0000)]
a -> an

16 years agoFinish up cpdup. Bump the protocol version to 2 and refuse to talk to
Matthew Dillon [Wed, 16 Apr 2008 17:38:19 +0000 (17:38 +0000)]
Finish up cpdup.  Bump the protocol version to 2 and refuse to talk to
older versions of cpdup run on the remote.

16 years agoRefuse to talk with the remote cpdup if it's version is not compatible.
Matthew Dillon [Wed, 16 Apr 2008 17:30:56 +0000 (17:30 +0000)]
Refuse to talk with the remote cpdup if it's version is not compatible.

16 years agoRemove whitespace after parenthesis.
Sascha Wildner [Wed, 16 Apr 2008 08:29:21 +0000 (08:29 +0000)]
Remove whitespace after parenthesis.

16 years agoRemove extra whitespace after parenthesis.
Sascha Wildner [Wed, 16 Apr 2008 07:21:57 +0000 (07:21 +0000)]
Remove extra whitespace after parenthesis.

16 years agoOops, I typed .Op where it should have been .Fl
Sascha Wildner [Wed, 16 Apr 2008 07:14:11 +0000 (07:14 +0000)]
Oops, I typed .Op where it should have been .Fl

16 years agoUpdate STANDARDS. While here, fix some mdoc issues.
Sascha Wildner [Tue, 15 Apr 2008 23:51:00 +0000 (23:51 +0000)]
Update STANDARDS. While here, fix some mdoc issues.

16 years agoAdd libc support for gcc stack protector. Compatibility with gcc34 propolice
Hasso Tepper [Tue, 15 Apr 2008 23:41:28 +0000 (23:41 +0000)]
Add libc support for gcc stack protector. Compatibility with gcc34 propolice
is preserved.

16 years agoFix reference. While here, remove trailing whitespace.
Sascha Wildner [Tue, 15 Apr 2008 23:00:52 +0000 (23:00 +0000)]
Fix reference. While here, remove trailing whitespace.

16 years agoVOP_ABORTOP(9) was removed before we forked.
Sascha Wildner [Tue, 15 Apr 2008 22:22:24 +0000 (22:22 +0000)]
VOP_ABORTOP(9) was removed before we forked.

16 years agoAdd section.
Sascha Wildner [Tue, 15 Apr 2008 22:05:38 +0000 (22:05 +0000)]
Add section.

16 years agoAdd a device_set_driver(9) manual page.
Sascha Wildner [Tue, 15 Apr 2008 22:02:59 +0000 (22:02 +0000)]
Add a device_set_driver(9) manual page.

Taken-from: FreeBSD

16 years agoAdd a vflush(9) manual page.
Sascha Wildner [Tue, 15 Apr 2008 21:00:56 +0000 (21:00 +0000)]
Add a vflush(9) manual page.

Taken-from: FreeBSD

16 years agoImprove markup.
Sascha Wildner [Tue, 15 Apr 2008 19:38:26 +0000 (19:38 +0000)]
Improve markup.

16 years agoa -> an
Sascha Wildner [Tue, 15 Apr 2008 19:19:49 +0000 (19:19 +0000)]
a -> an

16 years agoSync with FreeBSD (documents -P).
Sascha Wildner [Tue, 15 Apr 2008 18:11:32 +0000 (18:11 +0000)]
Sync with FreeBSD (documents -P).

16 years agoSync with FreeBSD (adds reload).
Sascha Wildner [Tue, 15 Apr 2008 18:11:00 +0000 (18:11 +0000)]
Sync with FreeBSD (adds reload).

16 years agovfs_export_lookup() doesn't have a manual page.
Sascha Wildner [Tue, 15 Apr 2008 16:26:02 +0000 (16:26 +0000)]
vfs_export_lookup() doesn't have a manual page.

16 years agoRemove hardcoded paths from etc/rc.d/ldconfig and move them to
Sascha Wildner [Tue, 15 Apr 2008 10:11:35 +0000 (10:11 +0000)]
Remove hardcoded paths from etc/rc.d/ldconfig and move them to
ldconfig_paths.

Submitted-by: Andreas Hauser <andy@splashground.de>
Dragonfly-bug: <https://bugs.dragonflybsd.org/issue209>

16 years agoAdd <sys/types.h> for size_t.
Sascha Wildner [Tue, 15 Apr 2008 08:11:50 +0000 (08:11 +0000)]
Add <sys/types.h> for size_t.

16 years agoRemove debugging assertion.
Matthew Dillon [Tue, 15 Apr 2008 01:45:22 +0000 (01:45 +0000)]
Remove debugging assertion.

16 years agoAdd __sreadahead() to help with pkgsrc's devel/m4.
Matthew Dillon [Tue, 15 Apr 2008 01:16:14 +0000 (01:16 +0000)]
Add __sreadahead() to help with pkgsrc's devel/m4.

16 years agos/.Nm/.Xr/
Sascha Wildner [Mon, 14 Apr 2008 22:18:14 +0000 (22:18 +0000)]
s/.Nm/.Xr/

16 years agoUpdate the documentation for umtx_sleep() and umtx_wakeup().
Matthew Dillon [Mon, 14 Apr 2008 20:17:41 +0000 (20:17 +0000)]
Update the documentation for umtx_sleep() and umtx_wakeup().

16 years agoFix some issues in libthread_xu's condvar implementation.
Matthew Dillon [Mon, 14 Apr 2008 20:12:41 +0000 (20:12 +0000)]
Fix some issues in libthread_xu's condvar implementation.

* Non-broadcast mode is not guaranteed to signal just one waiter, loosen
  it up a bit to close race conditions and signal more if necessary.

* Clean up the condition structure.  Do not try to track non-broadcast
  wakeups.  Do not try to block waiting for individual wakeups... the
  spec does not require it and, in fact, doing so can create more
  problems then it solves.

* Load oldseq from cv->c_seqno *BEFORE* releasing the passed mutex to
  close a race.  The mutex is there precisely so that userland can
  guarantee that no race will occur between waiter and signaler.

Reported-by: Jordan Gordeev <jgordeev@dir.bg>,
             "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>

16 years agoFix a bug in umtx_sleep(). This function sleeps on the mutex's physical
Matthew Dillon [Mon, 14 Apr 2008 20:00:29 +0000 (20:00 +0000)]
Fix a bug in umtx_sleep().  This function sleeps on the mutex's physical
address and will get lost if the physical page underlying the VM address is
copied on write.  This case can occur when a threaded program fork()'s.

Introduce a VM page event notification mechanism and use it to wake-up
the umtx_sleep() if the underlying page takes a COW fault.

Reported-by: Jordan Gordeev <jgordeev@dir.bg>,
     "Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>

16 years agoMinor optimization to LIST_FOREACH_MUTABLE taken from FreeBSD.
Matthew Dillon [Mon, 14 Apr 2008 19:44:18 +0000 (19:44 +0000)]
Minor optimization to LIST_FOREACH_MUTABLE taken from FreeBSD.

16 years agoDon't free held clean pages when asked to clean.
Matthew Dillon [Mon, 14 Apr 2008 19:43:02 +0000 (19:43 +0000)]
Don't free held clean pages when asked to clean.

16 years agoFix ktrace for threaded processes. Move the KTRFAC_ACTIVE flag to the LWP
Matthew Dillon [Mon, 14 Apr 2008 12:01:53 +0000 (12:01 +0000)]
Fix ktrace for threaded processes.  Move the KTRFAC_ACTIVE flag to the LWP
so a ktrace occuring on one LWP does not cause another LWP to fail to log
a trace entry.

16 years agoFix various typos in our manual pages.
Sascha Wildner [Mon, 14 Apr 2008 08:17:09 +0000 (08:17 +0000)]
Fix various typos in our manual pages.

16 years agoFix multiple issues with -p<parallel>, including several data corruption
Matthew Dillon [Mon, 14 Apr 2008 05:40:51 +0000 (05:40 +0000)]
Fix multiple issues with -p<parallel>, including several data corruption
issues.

* Use malloc'd buffers instead of static buffers
* Fix memory leaks
* Fix races with hardlink tracking structures
* Fix bug in remote mknod (it wasn't creating the node on the remote host)
* Fix stack blowouts from deep recursions by starting a new thread.
* Postpend the pid for tmp file creation.

16 years agopfsync_state doesn't have or need a hash field, the state will be hashed
Matthew Dillon [Sat, 12 Apr 2008 17:39:41 +0000 (17:39 +0000)]
pfsync_state doesn't have or need a hash field, the state will be hashed
when it is moved into a real pf_state structure.

Reported-by: Sascha Wildner <saw@online.de>
16 years agoAdd MLINKS for MD[245]Pad.3.
Sascha Wildner [Sat, 12 Apr 2008 08:38:40 +0000 (08:38 +0000)]
Add MLINKS for MD[245]Pad.3.

16 years agoStart sentence on a new line (and remove trailing space).
Sascha Wildner [Fri, 11 Apr 2008 20:22:18 +0000 (20:22 +0000)]
Start sentence on a new line (and remove trailing space).

16 years ago* Bump date for recent new features.
Sascha Wildner [Fri, 11 Apr 2008 18:27:44 +0000 (18:27 +0000)]
* Bump date for recent new features.

* Add -l to the synopsis.

* Some little mdoc fixes.

16 years agoImplement a number of major new features to PF.
Matthew Dillon [Fri, 11 Apr 2008 18:21:49 +0000 (18:21 +0000)]
Implement a number of major new features to PF.

* Implement several new options to keep/modulate/synproxy state.
  'pickups', 'no-pickups', and 'hash-only'.  Example:

    pass on $ext_if inet from any to any keep state (pickups)

* Implement a SET directive to set the default keep policy.  Example:

    set keep-policy keep state (pickups)
    pass on $ext_if inet from any to any

* Implement the 'no state' phrase for rules, disabling any previously
  specified default state policy for that rule (ala OpenBSD).

'pickups' and 'hash-only' imply no flag restrictions, no-pickups implies
flags S/SA.  When pickups are enabled the state code will re-establish state
for existing TCP connections.  Because the tcp options passed in the SYNs
are not known when this occurs, sequence space checking will be disabled
for those connections.  The 'hash-only' mode allows pickups but disables
sequence space checking regardless of whether the SYN packets were observed
or not.

The state code no longer attempts to do sequence space checking if it has
no information on TCP options passed in SYN packets.  The SYN from both
ends must be observed for sequence space checking to occur (which is what
happens by default due to flag restrictions).

It should be noted that OpenBSD defaults to 'keep state' with the equivalent
of no-pickups.  The problem with this is that rebooting you router or
otherwise losing state will cause existing TCP connections to be reset,
and I do not think this is an appropriate default for PF.  DragonFly does
not default to using keep state but introduces the global SET directive
to allow it to be enabled by default.

Finally, note that when using pickups or hash-only, if you desire PF to
not drop TCP connections on loss of state you need to have a few more
rules then usual to pickup on packets going the opposite direction.
For example, if you allow outgoing connections then you ALSO have to keep
state on INCOMING packets with 'flags /S' (i.e. 'established') in order
to ensure that active connections can be re-established on loss of state
by packets in either direction.

This isn't too bad since anyone using queueing has to use multiple rule
sets anyway to ensure that state is established on the proper queue.

In anycase, DragonFly now allows you to pick your poison.  One global SET
directive and you can use OpenBSD's policy, or you can make your own.

In-consultation-with: Max Laier <max@love2party.net>

16 years agoUpdate PORTING instructions for linux to support pthreads.
Matthew Dillon [Fri, 11 Apr 2008 17:33:11 +0000 (17:33 +0000)]
Update PORTING instructions for linux to support pthreads.

16 years agoProperly mark a transaction has being completed so the slave side of
Matthew Dillon [Fri, 11 Apr 2008 17:18:21 +0000 (17:18 +0000)]
Properly mark a transaction has being completed so the slave side of
the connection does not loop forever on its data.

16 years agoClean up remains after the Citrus update.
Sascha Wildner [Fri, 11 Apr 2008 11:18:16 +0000 (11:18 +0000)]
Clean up remains after the Citrus update.

16 years agoProperly detach children so we dont have to pthread_join() them. Fixes
Matthew Dillon [Fri, 11 Apr 2008 08:44:07 +0000 (08:44 +0000)]
Properly detach children so we dont have to pthread_join() them.  Fixes
a resource exhaustion issue which could stall cpdup when used with -pN.

16 years agoMore cpdup work.
Matthew Dillon [Fri, 11 Apr 2008 07:31:05 +0000 (07:31 +0000)]
More cpdup work.

* Add -C which is passed down to ssh to turn on compression.
* Fix a race condition in the hardlink handling code that could occur w/ -pN
* Fix a deadlock in the socket read code.  The connection's read mutex
  must be released before the master mutex can be re-acquired.
* Reduce the I/O block size when running parallel threads to try to avoid
  blocking on write().

16 years agoAdd parallel transaction support for remote source or target specifications.
Matthew Dillon [Thu, 10 Apr 2008 22:09:08 +0000 (22:09 +0000)]
Add parallel transaction support for remote source or target specifications.
The implementation is a bit crude because I don't want to take too many
chances on a codebase that wasn't originally designed to be multi-threaded,
so the master mutex is only released when a thread is waiting for input
on a socket.

* Add the -p<threads> option and compile -pthread by default.  This is only
  useful when the source and/or destination is a remote host.  Note that
  parallel transaction mode will not work with older cpdup binaries on the
  remote end.

  This greatly improves cpdup's performance when operating on a remote
  source and/or target.

* Add -l to force stdout and stderr to be line-buffered.

16 years agoSync Citrus iconv support with NetBSD.
Hasso Tepper [Thu, 10 Apr 2008 10:21:13 +0000 (10:21 +0000)]
Sync Citrus iconv support with NetBSD.

Obtained-from: NetBSD

16 years agoBring the list of variables and function docs in time(9) closer to
Sascha Wildner [Wed, 9 Apr 2008 21:41:59 +0000 (21:41 +0000)]
Bring the list of variables and function docs in time(9) closer to
reality.

Derived-from: FreeBSD

16 years agoFix ifdefs to make it possible to use time.h in standards compilant code.
Hasso Tepper [Wed, 9 Apr 2008 07:05:54 +0000 (07:05 +0000)]
Fix ifdefs to make it possible to use time.h in standards compilant code.

Obtained-from: FreeBSD

16 years agoAdd double_t and float_t typedefs for both i386 and amd64 as required by C99.
Hasso Tepper [Wed, 9 Apr 2008 06:44:37 +0000 (06:44 +0000)]
Add double_t and float_t typedefs for both i386 and amd64 as required by C99.

Obtained-from: FreeBSD with modifications

16 years agoSync with FreeBSD:
Sascha Wildner [Tue, 8 Apr 2008 13:23:38 +0000 (13:23 +0000)]
Sync with FreeBSD:

* Change semantics of -i (in-place editing) so that it treats each file
  independently from other files (desired in most practical cases). Keep
  the previous semantics (use a single continuous address space covering
  all files to edit in-place) under -I.

* Add -l option (make output line buffered).

* Make the 'y' command (translate) aware of multibyte characters.

* Add case-insensitive matching, using the 'I' flag, a la GNU sed.

* Remove 3rd clause.

* Raise WARNS to 6.

* Miscellaneous fixes and style(9) issues.

16 years agoRemove references to patches that no longer exist.
Sascha Wildner [Tue, 8 Apr 2008 12:12:53 +0000 (12:12 +0000)]
Remove references to patches that no longer exist.

16 years agoUpdate build for OpenSSH 5.0p1.
Peter Avalos [Mon, 7 Apr 2008 01:20:18 +0000 (01:20 +0000)]
Update build for OpenSSH 5.0p1.

16 years agoMFC 1.33/pf.c from NetBSD. Don't apply a window scale to the window
Matthew Dillon [Mon, 7 Apr 2008 00:43:44 +0000 (00:43 +0000)]
MFC 1.33/pf.c from NetBSD.   Don't apply a window scale to the window
size in a SYN packet.

Partial MFC 1.25/pf.c from NetBSD (specifically 1.487 from OpenBSD).
Fix a bug in the setting of sequence windows in the synproxy case.

16 years agoBring the 'probability' keyword into PF from NetBSD. This feature allows
Matthew Dillon [Sun, 6 Apr 2008 21:12:42 +0000 (21:12 +0000)]
Bring the 'probability' keyword into PF from NetBSD.  This feature allows
a rule to have a probability associated with it which governs whether the
rule is run or not for any given packet.

Suggested-by: =?ISO-8859-1?Q?C=E9dric_Berger?= <cedric@berger.to>
Obtained-from: NetBSD-current

16 years agoMention ALTQ_FAIRQ.
Sascha Wildner [Sun, 6 Apr 2008 19:29:47 +0000 (19:29 +0000)]
Mention ALTQ_FAIRQ.

16 years agoStart sentences on a new line and bump date for fair queueing.
Sascha Wildner [Sun, 6 Apr 2008 19:29:23 +0000 (19:29 +0000)]
Start sentences on a new line and bump date for fair queueing.

16 years agoLK_EXCLUSIVE has no business being in lockinit.
Peter Avalos [Sun, 6 Apr 2008 19:03:18 +0000 (19:03 +0000)]
LK_EXCLUSIVE has no business being in lockinit.

16 years agoAdd fairq to altq. Fairq is a fair queueing algorithm with bandwidth
Matthew Dillon [Sun, 6 Apr 2008 18:58:16 +0000 (18:58 +0000)]
Add fairq to altq.  Fairq is a fair queueing algorithm with bandwidth
prioritization and a bandwidth delimiter (hogs) to allow low bandwidth
buckets to jump the round robin.  This fairq algorithm is currently unweighted
but traffic can still be classified with the global priority model.  For
each queue traffic is normally round robined by taking a packet from each
bucket in turn.

This feature is primarily intended for edge routers and egress points with
bandwidth constrictions.

* Hogs feature allows low bandwidth buckets to burst.  Low bandwidth can
  mean, e.g. an interactive shell or even simply ack traffic, without
  the need to explicitly classify it.  Bandwidth is managed on a per-bucket
  basis.

* Prioritization feature allows minimum guaranteed bandwidths based on
  service classifications. e.g. VOIP, web, mail, PtP, etc.

* Weighted fairq not implemented (beyond using classification into priority
  queues), but the circular bucket design makes it a fairly easy task if
  someone wants to do it.

* Add ALTQ_MBUF_STATE_HASHED and generate a hash of the connection state
  in the mbuf header for any packet that you have set 'keep state' for
  in pf.  This is done in PF and is needed by fairq to bucketize
  'connections'.

* Add the fairq implementation and a new ALTQ_FAIRQ kernel build option.

* Simple example included below.

ports="{ 25, 80 }"
altq on vke0 fairq bandwidth 500Kb queue { normal, bulk }
queue bulk priority 1 bandwidth 100Kb \
        fairq(buckets 64, hogs 25Kb) qlimit 50
queue normal priority 2 bandwidth 400Kb \
        fairq(buckets 64, hogs 25Kb, default) qlimit 50

pass out on vke0 inet proto tcp from any to any \
        keep state queue normal
pass out on vke0 inet proto tcp from any to any port $ports \
        keep state queue bulk

16 years agoMerge from vendor branch OPENSSH:
Peter Avalos [Sun, 6 Apr 2008 17:29:06 +0000 (17:29 +0000)]
Merge from vendor branch OPENSSH:
Import OpenSSH 5.0p1.

16 years agoImport OpenSSH 5.0p1.
Peter Avalos [Sun, 6 Apr 2008 17:29:06 +0000 (17:29 +0000)]
Import OpenSSH 5.0p1.

16 years agoAdd a line about netrate/
Sepherosa Ziehau [Sun, 6 Apr 2008 03:23:49 +0000 (03:23 +0000)]
Add a line about netrate/

Reminded-by: swildner@
16 years agoAnsify a bit.
Sascha Wildner [Sat, 5 Apr 2008 22:10:14 +0000 (22:10 +0000)]
Ansify a bit.

I've left out raising WARNS since there are still warnings left.

Submitted-by: Kevin L. Kane <kevin.kane@gmail.com>
Dragonfly-bug: <https://bugs.dragonflybsd.org/issue77>

16 years agoFix a snafu with the last commit. Not all of the new AHCI detection support
Matthew Dillon [Sat, 5 Apr 2008 20:13:04 +0000 (20:13 +0000)]
Fix a snafu with the last commit.  Not all of the new AHCI detection support
was properly brought in, causing intel AHCI detection to panic with a
NULL pointer indirection.

Reported-by: Cristi Magherusan <cristi.magherusan@net.utcluj.ro>
16 years agoDRM update to git snapshot from 2008-01-04.
Hasso Tepper [Sat, 5 Apr 2008 18:12:30 +0000 (18:12 +0000)]
DRM update to git snapshot from 2008-01-04.

16 years agoRemove trailing space.
Sascha Wildner [Sat, 5 Apr 2008 09:13:24 +0000 (09:13 +0000)]
Remove trailing space.

16 years agoFix typo in comment.
Sascha Wildner [Sat, 5 Apr 2008 09:12:45 +0000 (09:12 +0000)]
Fix typo in comment.

16 years agoSync with FreeBSD (adds -n, -s and -x).
Sascha Wildner [Sat, 5 Apr 2008 08:50:41 +0000 (08:50 +0000)]
Sync with FreeBSD (adds -n, -s and -x).