dragonfly.git
11 years agotcp/sack: Fix off-by-one bug when updating rescue SACK information
Sepherosa Ziehau [Fri, 25 May 2012 06:18:18 +0000 (14:18 +0800)]
tcp/sack: Fix off-by-one bug when updating rescue SACK information

11 years agotcp/sack: Force out more segments allowed by "pipe" during fast recovery
Sepherosa Ziehau [Thu, 24 May 2012 08:09:57 +0000 (16:09 +0800)]
tcp/sack: Force out more segments allowed by "pipe" during fast recovery

If some segments are cumulatively acked or SACKed, and HighRxt equals
snd_una, one segment (new or retransmit) will be forced out even if cwnd
and pipe don't allow it.  When large amount of segments are lost, i.e.
computed pipe could be large, this avoids unnecessary retransmit timeout
and could perform as good as NewReno.

Sysctl node net.inet.tcp.force_sackrxt could be tuned to burst out several
retransmits, default is 1 (should be good enough).  Set this sysctl to 0,
SACK based fast recovery will obey the computed pipe.

Several unnecessary retransmit timeout graph as described above:
http://leaf.dragonflybsd.org/~sephe/no_force_sack_rexmt2_15.xpl (starts @15s)
http://leaf.dragonflybsd.org/~sephe/no_force_sack_rexmt_54.xpl (starts @54s)

11 years agotcp/sack: Use RFC3517bis IsLost(snd_una) as fallback of early retransmit
Sepherosa Ziehau [Thu, 24 May 2012 05:35:36 +0000 (13:35 +0800)]
tcp/sack: Use RFC3517bis IsLost(snd_una) as fallback of early retransmit

Since we are less certain about whether is segment is lost or not when
using IsLost(snd_una), we do not send out other unSACKed segments except
the first unSACKed segment under this condition.  Sending out other
unSACKed segments could be too aggressive here; just wait for another
ACK to tick out more unSACKed segments.

11 years agokernel: Remove some bogus casts to the own type (FINAL).
Sascha Wildner [Thu, 24 May 2012 18:16:10 +0000 (20:16 +0200)]
kernel: Remove some bogus casts to the own type (FINAL).

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Thu, 24 May 2012 17:26:08 +0000 (19:26 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Thu, 24 May 2012 17:19:30 +0000 (19:19 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Thu, 24 May 2012 08:35:00 +0000 (10:35 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agotcp/sack: Fix the condition that SACK rescue retransmit can't be done
Sepherosa Ziehau [Wed, 23 May 2012 09:38:30 +0000 (17:38 +0800)]
tcp/sack: Fix the condition that SACK rescue retransmit can't be done

If we have nothing left above the HighRxt, the first unSACKed segment
will be used as the SACK rescue retransmit.

11 years agotcp: Indentation
Sepherosa Ziehau [Wed, 23 May 2012 09:37:39 +0000 (17:37 +0800)]
tcp: Indentation

11 years agokernel -- CLFLUSH support
Venkatesh Srinivas [Thu, 24 May 2012 02:15:25 +0000 (19:15 -0700)]
kernel -- CLFLUSH support

* Introduce a kernel variable, 'vmm_guest', signifying whether the
  kernel is running in a virtual environment, such as KVM. This is
  set based on the CPUID2.VMM flag on kernels and set automatically
  on virtual kernels.

* Introduce wrappers for CLFLUSH instructions.

* Provide tunable, hw.clflush_enable, to autoenable CLFLUSH on h/w (-1)
  disable always (0), or enable always (1).

Closes-bug: 2363
Reviewed-by: ftigeot@
From: David Shao, FreeBSD

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Wed, 23 May 2012 20:42:46 +0000 (22:42 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Wed, 23 May 2012 19:30:05 +0000 (21:30 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agokernel/linux: Fix a wrong cast (introduced in e54488bb).
Sascha Wildner [Wed, 23 May 2012 19:28:32 +0000 (21:28 +0200)]
kernel/linux: Fix a wrong cast (introduced in e54488bb).

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Wed, 23 May 2012 16:36:44 +0000 (18:36 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Wed, 23 May 2012 16:01:25 +0000 (18:01 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agotcp: Simplify "extended limited transmit" logic a little bit
Sepherosa Ziehau [Wed, 23 May 2012 05:44:52 +0000 (13:44 +0800)]
tcp: Simplify "extended limited transmit" logic a little bit

Don't follow the RFC4653 or RFC3517bis's "extended limited transmit"
description verbatimly; increase cwnd once and let tcp_output() do
the job.

11 years agotcp: Optimize SACK scoreboard records consolidation a little bit
Sepherosa Ziehau [Wed, 23 May 2012 03:14:02 +0000 (11:14 +0800)]
tcp: Optimize SACK scoreboard records consolidation a little bit

If the SACK block and SACK scoreboard record are matched exactly,
SACK scoreboard records consolidation is not needed at all.

11 years agoRevert "libc -- dmalloc: Call malloc_init as-needed, rather than via cc constructor."
Sascha Wildner [Tue, 22 May 2012 13:02:01 +0000 (15:02 +0200)]
Revert "libc -- dmalloc: Call malloc_init as-needed, rather than via cc constructor."

This reverts commit e12d3396c777165504d60d2a1408dcd7cb63660d.

11 years agoacpica: Unbreak LINT/LINT64 building
Sepherosa Ziehau [Tue, 22 May 2012 08:10:21 +0000 (16:10 +0800)]
acpica: Unbreak LINT/LINT64 building

11 years agoacpi/timer: Fix return value
Sepherosa Ziehau [Tue, 22 May 2012 07:55:45 +0000 (15:55 +0800)]
acpi/timer: Fix return value

11 years agoacpidb: regenerate osunixxf.c.patch
Magliano Andrea [Fri, 11 May 2012 13:59:11 +0000 (15:59 +0200)]
acpidb: regenerate osunixxf.c.patch

someone please take care of dfly header, if necessary;
i applied the patch by hand and pulled in a git diff

11 years agoacpidb: add missing evglock.c to Makefile
Magliano Andrea [Fri, 11 May 2012 13:58:52 +0000 (15:58 +0200)]
acpidb: add missing evglock.c to Makefile

11 years agoFix iasl compilation
Magliano Andrea [Fri, 11 May 2012 08:42:56 +0000 (10:42 +0200)]
Fix iasl compilation

basically sync with svn://svn.freebsd.org/base/head@220663

11 years agoSome files overlooked on first commit...
Magliano Andrea [Fri, 11 May 2012 08:19:52 +0000 (10:19 +0200)]
Some files overlooked on first commit...

11 years agoRevert previous commit (wrong tentative)
Magliano Andrea [Fri, 11 May 2012 07:19:24 +0000 (09:19 +0200)]
Revert previous commit (wrong tentative)

and do like svn://svn.freebsd.org/base/head@220663
it doesn't seem possible with bsd Makefile infrastructure
to set source target specific flags

11 years agoFirst import (compiles, seems to run correctly)
Magliano Andrea [Fri, 11 May 2012 06:12:10 +0000 (08:12 +0200)]
First import (compiles, seems to run correctly)

Taken from FreeBSD r222544:218590 (patch applied),
not from acpica repository.

One problem shown (no more reproducible, skew build?):
in bootverbose mode 'domain0 misses processors, should be 2, got 1'
sysctl shows hw.acpi.cpu0 only, other cpus are missing;
seems an error in evaluating C009 Method in aml code...

TODO:

* iasl compiler Makefile has to be reworked because of specific
  YASL flags for new files dtparser.[yl]

* 'EVENTHANDLER_INVOKE(power_suspend)' to be integrated in acpi.c

* atomic_load_acq_64 isn't implemented (used in acpi_hpet.c)

* sc->tc.tc_quality isn't available; to be investigated

* acpi_timer_test() improved implementation not integrated

* ACPI_CAP_SMP_C3_NATIVE and CPI_CAP_PX_HW_COORD in acpivar.h
  left out, as FreeBSD don't use it either

11 years agoigb: Add to x86_64 and i386 GENERIC
Sepherosa Ziehau [Mon, 21 May 2012 08:58:31 +0000 (16:58 +0800)]
igb: Add to x86_64 and i386 GENERIC

11 years agoLINT: Add igb(4)
Sepherosa Ziehau [Mon, 21 May 2012 08:35:02 +0000 (16:35 +0800)]
LINT: Add igb(4)

11 years agohammer2 - Fix lost flush
Matthew Dillon [Sun, 20 May 2012 18:12:58 +0000 (11:12 -0700)]
hammer2 - Fix lost flush

* hammer2 allows the buffer cache buffers related to MODIFIED but unlocked
  chains to be retired by the OS.  In this situation hammer2 does not want
  to bdwrite() the buffer again unless additional modifications are made,
  even though the MODIFIED bit in the chain remains set throughout the
  entire sequence.

* Fix a case where these additional modifications were not properly flagging
  for the buffer cache buffer to be retired with a bdwrite(), causing data
  loss.  This is related to the DIRTYBP chain flag.

* Make further adjustments to the DIRTYBP chain flag.

* Also fix a case where the MOVED bit might not get properly set when a
  block is resized.  The problem was masked by the fact that a resize
  only occurs on data blocks and only during a write(), so the related
  buffer was being marked MODIFIED anyway.  However, the resize code still
  needed to be corrected.

* Add some debugging to 'hammer2 stat' to make it easier to poke around
  related kernel structures.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Sun, 20 May 2012 18:12:44 +0000 (11:12 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agolibc -- dmalloc: Call malloc_init as-needed, rather than via cc constructor.
Venkatesh Srinivas [Sun, 20 May 2012 14:10:56 +0000 (07:10 -0700)]
libc -- dmalloc: Call malloc_init as-needed, rather than via cc constructor.

dmalloc requires its own _nmalloc_thr_init be called before it can service
allocations. Applications with preinit arrays were able to call malloc before
constructors ran, which caused them to crash on uninitialized allocator state.

The change uses a flag to test for allocator init state. It is also careful
to not allow _nmalloc_thr_init to be called recursively from within pthread
initialization (slglobal.masked).

Reported-by: marino@
Closes-bug: 2305

11 years agonetif: Remove no longer used e1000 layout
Sepherosa Ziehau [Sun, 20 May 2012 13:52:01 +0000 (21:52 +0800)]
netif: Remove no longer used e1000 layout

11 years agoigb: Import Intel igb-2.2.3
Sepherosa Ziehau [Wed, 25 Apr 2012 12:42:40 +0000 (20:42 +0800)]
igb: Import Intel igb-2.2.3

Local changes
- Laundry the code
- Rewrite busdma related code
- Rewrite RX path
- Enable hardware TX IP chesksum

Integration w/ DragonFly's RSS and TX path optimization will be
conducted in the repository.

Tested-with: 82576 82575EB

11 years agoig_hal: Merge Intel igb-2.2.3 HAL w/ em-7.2.4 HAL
Sepherosa Ziehau [Thu, 19 Apr 2012 14:11:00 +0000 (22:11 +0800)]
ig_hal: Merge Intel igb-2.2.3 HAL w/ em-7.2.4 HAL

11 years agoe1000: Unhook from building, prepare for the new igb
Sepherosa Ziehau [Thu, 19 Apr 2012 13:57:50 +0000 (21:57 +0800)]
e1000: Unhook from building, prepare for the new igb

11 years agokernel/devfs: Remove the unused devfs Makefile.
Sascha Wildner [Sun, 20 May 2012 02:47:11 +0000 (04:47 +0200)]
kernel/devfs: Remove the unused devfs Makefile.

11 years agohammer2 - Add 'hammer2 stat'
Matthew Dillon [Sat, 19 May 2012 22:21:01 +0000 (15:21 -0700)]
hammer2 - Add 'hammer2 stat'

* Add the 'hammer2 stat' directive to access inode information not
  available from a normal stat.

  Currently reports ncopies, data_count, inode_count, data_quota, and
  inode_quota.

11 years agohammer2 - Get data-usage aggregation working, add INODE_GET
Matthew Dillon [Sat, 19 May 2012 22:17:03 +0000 (15:17 -0700)]
hammer2 - Get data-usage aggregation working, add INODE_GET

* Cleanup aggregation of data_count and inode_count in the inode.
  data_count should now work properly (though it requires a 'sync'
  if you want up-to-date information).

  This allow data and inode usage for an entire sub-tree to be
  retrieved from the parent directory inode.  No need to run 'du'
  over millions of inodes.

  The new 'hammer2 stat' command can be used to access the info.

* Add the HAMMER2IOC_INODE_GET/SET ioctls to access information that
  cannot be obtained from a normal stat().

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Sat, 19 May 2012 19:07:40 +0000 (12:07 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agokernel -- tmpfs: Convert tmpfs inode counter to per-mount field
Venkatesh Srinivas [Sat, 19 May 2012 03:33:56 +0000 (20:33 -0700)]
kernel -- tmpfs: Convert tmpfs inode counter to per-mount field

tmpfs used a global counter under a spinlock to set inode numbers. This
should be a per-mount field, protected by the mount lock.

11 years agohammer2 - Flush ordering fixes
Matthew Dillon [Sat, 19 May 2012 02:18:14 +0000 (19:18 -0700)]
hammer2 - Flush ordering fixes

* The flush code is required to write out modified chains, not just bdwrite()
  them.  Otherwise the disk synchronization and volume header write will be
  mis-ordered.

* Don't re-write indirect blocks that the OS had already written out.  This
  check is already being made for data blocks, and inode modifications are
  embedded and thus must always be written out.

* This fixes issues where 'hammer2 show <device>' would find corrupt
  topology during concurrent filesystem write activity.  The disk media
  is always supposed to be consistent.

  We don't care about block-reuse cases for this debug command but we do
  care that, sans block-reuse, a dump will produce a consistent topology.

11 years agohammer2 - general stabilization, flusher, mmap, etc
Matthew Dillon [Sat, 19 May 2012 00:19:17 +0000 (17:19 -0700)]
hammer2 - general stabilization, flusher, mmap, etc

* Revamp the flush logic.  Flushes now stage the blockref related to the
  data written out to the media.  Higher level chains save the staged
  blockref instead of the current blockref.

* This allows flushes to occur concurrent with active modification of the
  topology without having to restart the flush.  Modifications made after
  the flush has started running will remain intact and not be committed
  to media until the next flush (see note).

  NOTE: Currently chain deletions break this, but this is the only issue
  currently.

* Fix lost chains during unmount.  Deleted chains can still have the MOVED
  and/or MODIFIED bits set, which add additional refs and prevents them
  from being freed.

  Detect when a chain is being deleted permanently (verses temporarily due
  to a rename) and clean out the bits in question.

  NOTE: Currently deletions are removed from the in-memory topology, which
is why the previous NOTE above is still a problem, so we will need
to fix this and to retain at least the MOVED for flushes in
progress.

* Fix data corruption related to unflagged chains which wind up not getting
  flushed and also due to a bug in the indirect block management code.

* Fix a mmap() access failure for cached direct-data (less than 512 bytes).
  nvextendbuf() was not being called for the direct-data case during the
  write().

* Buildworld with a HAMMER2 /usr/obj now succeeds.

* 'hammer2 pfs-create <label>' now defaults to a pfstype of MASTER,
  instead of requiring that the pfstype always be specified.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Sat, 19 May 2012 00:01:15 +0000 (17:01 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agoamr(4): Some fixes.
Sascha Wildner [Fri, 18 May 2012 23:57:25 +0000 (01:57 +0200)]
amr(4): Some fixes.

* Bring in some small updates from FreeBSD.

* Add MODULE_VERSION.

* Make the interrupt handler MPSAFE. This was a porting oversight by me.

11 years agoFix some typos in manual pages.
Sascha Wildner [Fri, 18 May 2012 18:10:50 +0000 (20:10 +0200)]
Fix some typos in manual pages.

11 years agobsd-family-tree: Sync with FreeBSD.
Sascha Wildner [Fri, 18 May 2012 16:53:28 +0000 (18:53 +0200)]
bsd-family-tree: Sync with FreeBSD.

11 years agobuiltin.1: Bring in some enhancements from FreeBSD.
Sascha Wildner [Fri, 18 May 2012 11:16:32 +0000 (13:16 +0200)]
builtin.1: Bring in some enhancements from FreeBSD.

It is modeled after what they did but based on what we actually have in
our shells' source.

* Use "No**" to mark commands which exist externally but are implemented
  as a script executing the builtin.

* Some further explanations and mdoc fixes.

11 years agobuiltin.1: Add two more built-in commands.
Sascha Wildner [Fri, 18 May 2012 11:05:09 +0000 (13:05 +0200)]
builtin.1: Add two more built-in commands.

11 years agotcp: Implement RFC4653 Non-Congestion Robustness (NCR)
Sepherosa Ziehau [Fri, 18 May 2012 07:29:39 +0000 (15:29 +0800)]
tcp: Implement RFC4653 Non-Congestion Robustness (NCR)

It is enabled by default and can be disabled using sysctl node:
net.inet.tcp.ncr

As far as I have tested on heavily reordered network path, this
algorithm does avoid most of the spurious fast retransmits.  While
on the normal network path, the fast retransmits stil could be
triggered properly.

11 years agotcp: Improve RFC3517bis support
Sepherosa Ziehau [Fri, 18 May 2012 02:33:21 +0000 (10:33 +0800)]
tcp: Improve RFC3517bis support

- Factor out tcp_fast_recovery()
- Delay fast retransmit or fast recovery for duplicated ACK which
  carries data or updates receiving window, so that
  o  The segments sent by fast retransmit/recovery could carry
     proper ack sequence and SACK information.
  o  Receiving window could get updated, so more new data could be
     injected into the network by the fast recovery.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Fri, 18 May 2012 03:00:27 +0000 (20:00 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agohammer2 - hardlink stabilization (3), data and inode count propagation.
Matthew Dillon [Fri, 18 May 2012 01:41:51 +0000 (18:41 -0700)]
hammer2 - hardlink stabilization (3), data and inode count propagation.

* Files with cached chains have to be flushed before they can be copied
  to the hardlink target, because the original inode will become a
  OBJTYPE_HARDLINK pointer which isn't allowed to have any sub-chains
  under the inode.

* We also need to flush for the upcoming snapshot function to work properly
  or dirty in-memory data will not show up in the snapshot.

* Propagate the inode and byte use count up the chain.  Tie the inode count
  into df's inode count (per-PFS).  The byte count and quota fields are not
  yet tied in.

* Adjust stat[v]fs() to return filesystem space useage using the allocation
  iterator for now, to aid debugging.

* Adjust the allocation iterator to skip reserved areas at the beginning of
  each 2GB storage zone.

11 years agokernel: Remove some bogus casts to the own type.
Sascha Wildner [Thu, 17 May 2012 23:52:22 +0000 (01:52 +0200)]
kernel: Remove some bogus casts to the own type.

11 years agobuiltin.1: Sync with what we have.
Sascha Wildner [Thu, 17 May 2012 23:03:10 +0000 (01:03 +0200)]
builtin.1: Sync with what we have.

11 years agoshare/man/man1/Makefile: One MLINK per line.
Sascha Wildner [Thu, 17 May 2012 21:48:20 +0000 (23:48 +0200)]
share/man/man1/Makefile: One MLINK per line.

11 years agoexamples/rconfig: Some fixes to our installation scripts.
Sascha Wildner [Thu, 17 May 2012 20:17:53 +0000 (22:17 +0200)]
examples/rconfig: Some fixes to our installation scripts.

* Allow the script to be run in a netbooted scenario, too.

* Raise the default size of the root partition to 768M (like the
  installer's default).

* While here, add some comments and whitespace.

Submitted-by: Joachim de Groot <jdegroot@web.de>
11 years agohammer2 - hardlink stabilization pass
Matthew Dillon [Thu, 17 May 2012 18:34:18 +0000 (11:34 -0700)]
hammer2 - hardlink stabilization pass

* Fix another edge case where nkeybits could exceed 64, resulting in
  an assertion.

11 years agohammer2 - hardlink stabilization pass
Matthew Dillon [Thu, 17 May 2012 18:01:51 +0000 (11:01 -0700)]
hammer2 - hardlink stabilization pass

* Fix infinite loop in hammer2_chain_create_indirect() related to the
  case where the key range is the full 64 bits, which can occur when
  invisible hardlink entries are mixed in with normal entries.

* Fix the nlinks count in a couple of places.

* Don't iterate invisibile directory entries.  Lookups of hardlink targets
  by inode number are absolute.  Normal directory entries have a collision
  counter, hardlink targets do not.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Thu, 17 May 2012 18:01:30 +0000 (11:01 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agovkernel: Fix compilation with profiling support.
Sascha Wildner [Thu, 17 May 2012 14:17:22 +0000 (16:17 +0200)]
vkernel: Fix compilation with profiling support.

The vkernel is a special userland program in the regard that its Makefile
is generated by config(8), which is kind of tailored to the real kernel.

So first of all, we have to modify config(8) to detect it's a vkernel we
want to build and in this case it should not define GPROF which otherwise
activates the real kernel's profiling bits.

Then, modify libkern's mcount.c to skip kernel specific parts too.

Then, modify the vkernels' Makefiles to take into account ${PROF} (and
while we're here, ${DEBUG} too) which are set by the surrounding Makefile
which is generated by config(8).

The vkernel is now (from profiling point of view) treated like any other
userland program.

Last but not least, add some documentation about building a vkernel with
profiling support to vkernel's manpage.

To build with profiling, simply add CONFIGARGS=-p to the buildkernel
command line. It will need the config(8) program to be in /usr/obj's
btools dir, so either a buildworld with this commit needs to be done,
or config can be installed manually to /usr/sbin and nativekernel can
be used.

Tested-by: tuxillo
11 years agotcp: Ignore TCP_NOPUSH socketopt by default
Sepherosa Ziehau [Thu, 17 May 2012 09:58:41 +0000 (17:58 +0800)]
tcp: Ignore TCP_NOPUSH socketopt by default

For ill optimized programs which misuses this sockopt will cause
unpredicted length of network stalling, if the total sending size
is not TCP sending segment size aligned.

sysctl node net.inet.tcp.disable_nopush controls whether TCP_NOPUSH
will take effect or not

I am not going to fight agaist the stupid programs in the wild.

DragonFly-bug: http://bugs.dragonflybsd.org/issues/2368

This is actually _not_ a bug on our side.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Thu, 17 May 2012 08:53:11 +0000 (01:53 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agohammer2 - Complete core hardlink support work
Matthew Dillon [Thu, 17 May 2012 08:36:51 +0000 (01:36 -0700)]
hammer2 - Complete core hardlink support work

This implements core hardlink support for hammer2.  In order to maintain the
strict bottom-up block modification hierarchy for the chains hardlinks must
be implemented with special forwarding inodes.

When a hardlink is created (nlinks 1->2) the file is replaced with a
forwarding entry and then recreated as a special hidden directory entry
indexed by its inode number at a higher directory level which is common
to all hardlinks to that file.

The forwarding entry simply specifies the inode number, thus our ability to
trivially snapshot a PFS is retained.

Since the real inode is indexed at a higher common directory locating the
real inode simply requires iterating parent directories until we find a
match.

* Default vfs.hammer2.hardlink_enable to 1 (enabled).

* Track and adjust nlinks.

* Implement OBJTYPE_HARDLINK forwarding directory entry, hidden inode,
  vnode->v_data inode replacement for the nlinks 1->2 case, and hidden
  inode deletion for the nlinks 1->0 case.

* The deconsolidation for the nlinks 2->1 case is not yet implemented.

11 years agokernel/profiling: Fix a kprintf format.
Sascha Wildner [Thu, 17 May 2012 08:41:29 +0000 (10:41 +0200)]
kernel/profiling: Fix a kprintf format.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Thu, 17 May 2012 08:36:17 +0000 (01:36 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agotcp: Make PAWS robust against segments reordering
Sepherosa Ziehau [Wed, 16 May 2012 08:53:37 +0000 (16:53 +0800)]
tcp: Make PAWS robust against segments reordering

This tends to prevent valid new segments from being dropped by the
reordered segments sent by the fast retransmission algorithm on the
sending side, i.e. the fast retransmitted segment w/ larger timestamp
arrives earlier than the previously sent new segments w/ smaller
timestamp, which causes the valid new segments being dropped.

11 years agohammer2 - Flesh out hardlink infrastructure
Matthew Dillon [Thu, 17 May 2012 04:19:00 +0000 (21:19 -0700)]
hammer2 - Flesh out hardlink infrastructure

* Create the API function skeletons which will be used to implement the
  hardlink support infrastructure.

* Add vfs.hammer2.hardlink_enable (default 0=disabled).  1=enable, -1=faked.
  This is mainly for debugging, hardlinks are not yet implemented as of this
  commit.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Thu, 17 May 2012 00:15:51 +0000 (17:15 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agotest/debug/fdpassing: Correct a typo.
Sascha Wildner [Wed, 16 May 2012 20:06:47 +0000 (22:06 +0200)]
test/debug/fdpassing: Correct a typo.

11 years agohammer2 - hookup getattr, setattr
Matthew Dillon [Wed, 16 May 2012 03:04:15 +0000 (20:04 -0700)]
hammer2 - hookup getattr, setattr

* Hook up most remaining fields for getattr and setattr, and also initial
  ownership and so forth for create.

* initialize and update the time on create, setattr, and write.

* kqueue handling for write.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Wed, 16 May 2012 02:27:39 +0000 (19:27 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agotcp: Use TAILQ for segments reassemble queue
Sepherosa Ziehau [Wed, 16 May 2012 01:15:28 +0000 (09:15 +0800)]
tcp: Use TAILQ for segments reassemble queue

So the last segment of the reassemble queue could be peeked w/ minimal cost

11 years agokgdb: Add TUI mode as an option
John Marino [Tue, 15 May 2012 21:50:11 +0000 (23:50 +0200)]
kgdb: Add TUI mode as an option

Now that -tui mode is fixed for gdb, let's allow kgdb to use it.  This
commit adds the -t (--tui-mode) option to kgdb to allow debugging core
files with gdb's Text User Interface terminal interface.

The -q (--quiet) option had to set when --tui-mode option is set due
to the initial verbosity destroying the curses window otherwise.

11 years agogdb: Fix gdb -tui mode
John Marino [Tue, 15 May 2012 20:56:24 +0000 (22:56 +0200)]
gdb: Fix gdb -tui mode

The gdbtui (aka gdb -tui) mode has been nonfunctional for a long time
due to the replacement of readline with libedit.  After speaking with
Cristos Zoulas, it was confirmed that libedit can't support gdbtui now
and is not envisioned to support it in the future.

The tui mode is fixed by building the readline library internally and
linking against that instead of libedit.

The README files were updated to reflected additional imported sources
for readline and the removal of libedit-caused local modications to
tui-io.c file.

11 years agoMerge branch 'vendor/GDB'
John Marino [Tue, 15 May 2012 22:29:55 +0000 (00:29 +0200)]
Merge branch 'vendor/GDB'

11 years agogdb vendor branch: Bring in additional source files
John Marino [Tue, 15 May 2012 19:15:22 +0000 (21:15 +0200)]
gdb vendor branch: Bring in additional source files

The tui mode of gdb will not function when the readline library is
replaced with libedit.  Bring in readline sources to build gdb
properly.  The readline library will be used internally to gdb only.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Tue, 15 May 2012 17:41:39 +0000 (10:41 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agopci: Update several bits for PCI Express 2.0
Sepherosa Ziehau [Tue, 15 May 2012 05:48:54 +0000 (13:48 +0800)]
pci: Update several bits for PCI Express 2.0

11 years agohammer2 - Add media dump command, improve help output
Matthew Dillon [Tue, 15 May 2012 05:40:10 +0000 (22:40 -0700)]
hammer2 - Add media dump command, improve help output

* Add 'hammer2 show <device>'.  This will dump the contents of the
  hammer2 filesystem structure on-media.

* Improve usage() output.

* Rename 'hammer2 debug <host>' to 'hammer2 shell <host>'.

11 years agohammer2 - last_tid renamed to mirror_tid in volume header
Matthew Dillon [Tue, 15 May 2012 05:39:10 +0000 (22:39 -0700)]
hammer2 - last_tid renamed to mirror_tid in volume header

* The volume header needs a discrete field to hold the highest-propagated
  mirror_tid value.

11 years agohammer2 - Implement modify_tid and mirror_tid
Matthew Dillon [Tue, 15 May 2012 05:36:32 +0000 (22:36 -0700)]
hammer2 - Implement modify_tid and mirror_tid

* Assign and propagate mirror_tid to the root on flush.

* Set modify_tid for direct modifications

* Code variable naming cleanup in hammer2_flush*() functions.

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Tue, 15 May 2012 05:36:05 +0000 (22:36 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agopci: Support PCI Express Configuration Space memory-mapped access mechanism
Sepherosa Ziehau [Mon, 14 May 2012 09:13:17 +0000 (17:13 +0800)]
pci: Support PCI Express Configuration Space memory-mapped access mechanism

Also remove the outdated type 2 Configuration Space access mechanism;
it should never been seen on platforms w/ AMD64 capable CPUs.

Obtained-from: FreeBSD

11 years agopci: Introduce PCIE_REGMAX
Sepherosa Ziehau [Tue, 15 May 2012 04:58:20 +0000 (12:58 +0800)]
pci: Introduce PCIE_REGMAX

Obtained-from: FreeBSD

11 years agoMerge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository...
Matthew Dillon [Mon, 14 May 2012 21:35:16 +0000 (14:35 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2

11 years agoUnbreak world (tic)
John Marino [Mon, 14 May 2012 16:11:51 +0000 (18:11 +0200)]
Unbreak world (tic)

The tic utility should be built with the ncursesw library, but that one
is not available on any system with more than 2 days since the last
build.  On those systems, the world will break pretty quickly.

The Makefile was updated to use the available ncurses library.  After
the release of DragonFly 3.2, the makefile on the master branch can
be updated to take the wide version of the ncurses library since we
only guarantee upwards compatibility for one release.

11 years agotic(1): Add man page for new tic utility
John Marino [Mon, 14 May 2012 13:57:57 +0000 (15:57 +0200)]
tic(1): Add man page for new tic utility

11 years agoterminfo: Add terminfo database creation to world build
John Marino [Mon, 14 May 2012 09:50:56 +0000 (11:50 +0200)]
terminfo: Add terminfo database creation to world build

1) add tic to bootstrap tools
2) pre-populate /usr/share/terminal subdirectories
3) Add share/terminfo subdir to share Makefile

11 years agoAdd share/terminfo: This constructs terminfo database
John Marino [Mon, 14 May 2012 09:44:45 +0000 (11:44 +0200)]
Add share/terminfo: This constructs terminfo database

This is not tied into buildworld yet, it requires /usr/bin/tic to be
set up as a bootstrap tool first.

11 years agoAdd /usr.bin/tic: terminfo entry-description compiler
John Marino [Mon, 14 May 2012 08:38:29 +0000 (10:38 +0200)]
Add /usr.bin/tic: terminfo entry-description compiler

The tic program is required to create the terminfo database.

11 years agoncurses: move USE_GETCAP, update README files
John Marino [Mon, 14 May 2012 07:38:53 +0000 (09:38 +0200)]
ncurses: move USE_GETCAP, update README files

The ncurses headers were generated with additional configuration switches
documented on README.DRAGONFLY.  One outcome is the USE_GETCAP should
be in the configuration header rather than in the Makefile, so that
was updated.

New files were imported to support building the terminfo database, and
the path for that will be /usr/share/terminfo.  Accordingly, the man
page and configuration header have been updated.

11 years agoMerge branch 'vendor/NCURSES'
John Marino [Mon, 14 May 2012 10:24:19 +0000 (12:24 +0200)]
Merge branch 'vendor/NCURSES'

11 years agoncurses vendor branch: Bring in additional source files
John Marino [Mon, 14 May 2012 07:20:26 +0000 (09:20 +0200)]
ncurses vendor branch: Bring in additional source files

In order to support the building of the terminfo database, additional
source files from the ncurses 5.9 tarball are needed.

11 years agoiwn: Add Intel(R) Centrino Wireless-N 100
Sepherosa Ziehau [Mon, 14 May 2012 08:26:24 +0000 (16:26 +0800)]
iwn: Add Intel(R) Centrino Wireless-N 100

Submitted-by: Francis GUDIN
DragonFly-bug: http://bugs.dragonflybsd.org/issues/2366

11 years agoUpdate files for OpenSSL-1.0.1c import.
Peter Avalos [Sun, 13 May 2012 19:55:08 +0000 (12:55 -0700)]
Update files for OpenSSL-1.0.1c import.

11 years agoMerge branch 'vendor/OPENSSL'
Peter Avalos [Sun, 13 May 2012 19:52:19 +0000 (12:52 -0700)]
Merge branch 'vendor/OPENSSL'

11 years agoImport OpenSSL-1.0.1c.
Peter Avalos [Sun, 13 May 2012 19:47:02 +0000 (12:47 -0700)]
Import OpenSSL-1.0.1c.

  o Fix TLS/DTLS record length checking bug CVE-2012-2333

11 years agoarcmsr(4): Disable MSI support on the 1880 models.
Sascha Wildner [Sun, 13 May 2012 13:40:53 +0000 (15:40 +0200)]
arcmsr(4): Disable MSI support on the 1880 models.

There is definitely MSI related breakage here (resulting in ccb
command timeout issues). It was verified with an ARC-1880i that
was kindly provided by ftigeot.

On the other hand, my ARC-1210 works like a charm using MSI.

Reported-by: ftigeot
11 years agoncurses: Add wide-character support
John Marino [Sun, 13 May 2012 10:09:32 +0000 (12:09 +0200)]
ncurses: Add wide-character support

The man pages already indicated wide-character support, but the
libraries weren't properly implemented.  Also removed unneeded
libmytinfo.  It was an alias for libncurses and four makefiles
referenced both.

11 years agohammer2 - Implement aes_256_cbc session encryption
Matthew Dillon [Sun, 13 May 2012 00:43:17 +0000 (17:43 -0700)]
hammer2 - Implement aes_256_cbc session encryption

* The AES session key and initial iv[] are transmitted in the public key
  exchange.

* The actual AES session key and initial iv[] is the data received XOR'd
  with the data sent, so if the public key exchange is broken (even if
  the verifier succeeds), the rest of the session will die a horrible
  death.

* We use aes_256_cbc and in addition to the iv[] being adjusted by the
  data in-flight we also inject some random data in each message header
  to mix iv[] up even more than it would be normally.

* We also check the message sequence number, which is embedded in the
  random data (the raw msg header's salt field), though the iv[] should
  catch any replays.

* NOTE: Verifier is still weak, but the session key and iv[] exchange
  is very strong.