dragonfly.git
12 months agoChanged OSNAME to match 5.0. v5.0.0rc2
Justin C. Sherrill [Sat, 30 Sep 2017 21:24:32 +0000 (17:24 -0400)]
Changed OSNAME to match 5.0.

12 months agoRevert "Update drm/radeon to Linux 4.7.10 as much as possible..."
Imre Vadász [Sat, 30 Sep 2017 19:08:51 +0000 (21:08 +0200)]
Revert "Update drm/radeon to Linux 4.7.10 as much as possible..."

This caused severe issues on some modern radeon models (e.g. Kaveri APUs).
Not reverting the 62dc643ef61b347c4c2e60ad9ea68dd766741c90 commit, it's just
a 2 character diff that was conflicting with this change.

This reverts commit a7a95252afec8bfcc34ee5b8725136b17b77043f.

Tested-By: ivadasz
Reported-By: several people on #dragonflybsd
12 months ago<sys/param.h>: Fix __DragonFly_version.
Sascha Wildner [Sat, 30 Sep 2017 17:47:14 +0000 (19:47 +0200)]
<sys/param.h>: Fix __DragonFly_version.

Reported-by: zrj
12 months agoUpdate UPDATING a bit for the disabling of FFS_ROOT.
Sascha Wildner [Sat, 30 Sep 2017 17:29:42 +0000 (19:29 +0200)]
Update UPDATING a bit for the disabling of FFS_ROOT.

12 months agorc.conf.5: Improve moused_type description a bit more.
Sascha Wildner [Sat, 30 Sep 2017 14:47:04 +0000 (16:47 +0200)]
rc.conf.5: Improve moused_type description a bit more.

12 months ago5.0 branching. v5.0.0rc1
Justin C. Sherrill [Sat, 30 Sep 2017 00:10:43 +0000 (20:10 -0400)]
5.0 branching.

12 months agorc.conf.5: Improve wording of the moused_type variable description.
Sascha Wildner [Fri, 29 Sep 2017 19:03:36 +0000 (21:03 +0200)]
rc.conf.5: Improve wording of the moused_type variable description.

Especially, point out that the default is 'auto' and if that is
what the user wants, they need not set it explicitly in their
/etc/rc.conf.

Reported-by: htse (Harald Brinkhof)
12 months agoarp: Allocate context memory on owner cpu.
Sepherosa Ziehau [Fri, 29 Sep 2017 06:38:35 +0000 (14:38 +0800)]
arp: Allocate context memory on owner cpu.

12 months agosyncache: Timer queue iteration is MPsafe; no need to use marker.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:30:46 +0000 (09:30 +0800)]
syncache: Timer queue iteration is MPsafe; no need to use marker.

12 months agosyncache: Move local variables close their usage.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:03:46 +0000 (09:03 +0800)]
syncache: Move local variables close their usage.

12 months agosyncache: inpcb will never be NULL.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:02:03 +0000 (09:02 +0800)]
syncache: inpcb will never be NULL.

12 months agosyncache: Resurrect net.inet.tcp.syncache.count
Sepherosa Ziehau [Fri, 29 Sep 2017 00:11:18 +0000 (08:11 +0800)]
syncache: Resurrect net.inet.tcp.syncache.count

12 months agosyncache: Allocate syncache context on the owner cpu.
Sepherosa Ziehau [Thu, 28 Sep 2017 23:38:19 +0000 (07:38 +0800)]
syncache: Allocate syncache context on the owner cpu.

12 months agosyncache: Group timeout queue related fields together.
Sepherosa Ziehau [Thu, 28 Sep 2017 23:10:19 +0000 (07:10 +0800)]
syncache: Group timeout queue related fields together.

12 months agosyncache: Simplify timer message
Sepherosa Ziehau [Thu, 28 Sep 2017 22:44:50 +0000 (06:44 +0800)]
syncache: Simplify timer message

12 months agosyncache: Remove unnecessary struct field
Sepherosa Ziehau [Thu, 28 Sep 2017 22:15:32 +0000 (06:15 +0800)]
syncache: Remove unnecessary struct field

12 months agosyncache: Staticize syncache_lookup
Sepherosa Ziehau [Thu, 28 Sep 2017 21:59:58 +0000 (05:59 +0800)]
syncache: Staticize syncache_lookup

12 months agosyncache: Stringent assertion.
Sepherosa Ziehau [Thu, 28 Sep 2017 21:51:34 +0000 (05:51 +0800)]
syncache: Stringent assertion.

12 months agokern: Allocate sleep hash on owner cpu.
Sepherosa Ziehau [Thu, 28 Sep 2017 19:37:56 +0000 (03:37 +0800)]
kern: Allocate sleep hash on owner cpu.

12 months agovkernel - Print mmap() failures in megabytes
Matthew Dillon [Fri, 29 Sep 2017 00:43:20 +0000 (17:43 -0700)]
vkernel - Print mmap() failures in megabytes

* Print mmap() failures for vkd* drives in megabytes instead
  of bytes.

12 months agokernel - Add poor-man's AMD TOPOEXT support
Matthew Dillon [Fri, 29 Sep 2017 00:41:32 +0000 (17:41 -0700)]
kernel - Add poor-man's AMD TOPOEXT support

* Add a poor-man's TOPOEXT support which should properly detect
  the Ryzen topology.  I don't know about EPYC, though.  And it
  might muff the topology for older AMD cpus (also don't know).

12 months agokernel - Improve tsleep/wakeup queue collisions
Matthew Dillon [Fri, 29 Sep 2017 00:34:47 +0000 (17:34 -0700)]
kernel - Improve tsleep/wakeup queue collisions

* Expand the per-cpu array of TAILQs into an array of structures for
  tsleep/wakeup operation.

  The new structure stores up to four idents using a 4-way set-associative
  algorithm (-1 in ident0 handles overflows), allowing the originating cpu
  for a wakeup() to implement a second-level filter after the global array's
  cpumask.

* This filter prevents nearly all possible spurious IPIs that used to occur
  due to ident hash collisions, even when the hash table size is forced to
  be relatively small.  The code isn't the best in the world, but the IPIs
  it saves probably blow away the added overhead.

Testing-by: sephe, dillon
12 months agosound - Don't need to use swi_taskq to call KNOTE from the interrupt.
Imre Vadász [Thu, 28 Sep 2017 22:15:08 +0000 (00:15 +0200)]
sound - Don't need to use swi_taskq to call KNOTE from the interrupt.

* Also the dsp_read_filterops and dsp_write_filterops kqueue filters can
  be flagged FILTEROP_MPSAFE.

12 months agokernel - Restrict kill(-1, ...) to the reaper group as well
Matthew Dillon [Thu, 28 Sep 2017 19:55:19 +0000 (12:55 -0700)]
kernel - Restrict kill(-1, ...) to the reaper group as well

* When kill(-1, ...) is issued to 'all processes', restrict the list
  of processes signaled to the sender's reaper group or any sub-group
  of that group.

* This works around issues found when testing low maxproc limits.
  At least one (and probably several) third party programs do not
  properly handle errors when [v]fork() returns -1 and may try to
  signal the returned 'pid', which being -1 crowbars the entire system.

* Fixes issue when a cmake running under synth hits a fork failure
  and tries to signal the whole system.  With this change, the cmake
  winds up only crowbaring its own chroot due to synthexec's use of
  the reaper feature.

* Adjust the kill.2 manual page to reflect the change.

12 months agomandoc(1): Move the config.h to the build directory.
Sascha Wildner [Thu, 28 Sep 2017 18:15:03 +0000 (20:15 +0200)]
mandoc(1): Move the config.h to the build directory.

Next mandoc upgrade will remove it on the vendor branch as well.

12 months agoipfw: Add interface network filter.
Sepherosa Ziehau [Thu, 28 Sep 2017 07:14:49 +0000 (15:14 +0800)]
ipfw: Add interface network filter.

This eases src/dst matching if the IP address is assigned to the interface
dynamically, e.g. by DHCP.

12 months agouipc: Use sendmsg_oncpu, if possible.
Sepherosa Ziehau [Thu, 28 Sep 2017 01:42:04 +0000 (09:42 +0800)]
uipc: Use sendmsg_oncpu, if possible.

This further reduces unnecessary IPIs (5500/s -> 5000/s).

12 months agocallout: Embed thread in per-cpu callout context.
Sepherosa Ziehau [Wed, 27 Sep 2017 23:20:26 +0000 (07:20 +0800)]
callout: Embed thread in per-cpu callout context.

12 months agokern: Enhance wakeup hash construction to reduce hash collision.
Sepherosa Ziehau [Wed, 27 Sep 2017 23:18:37 +0000 (07:18 +0800)]
kern: Enhance wakeup hash construction to reduce hash collision.

With-input-from: dillon
Tested-by: dillon
12 months agoRemove libmandoc.
Sascha Wildner [Thu, 28 Sep 2017 06:22:34 +0000 (08:22 +0200)]
Remove libmandoc.

Maintaining it separately, along with its manual pages and headers,
is more maintenance burden than it has real value.

Nothing but mandoc(1) needs it, so just include the source files in
the mandoc(1) build for now.

In-discussion-with: Lubos Boucek <bouceklubos@gmail.com>

12 months agokern: Add read-only sysctl for sleep queue table size
Sepherosa Ziehau [Wed, 27 Sep 2017 19:29:44 +0000 (03:29 +0800)]
kern: Add read-only sysctl for sleep queue table size

12 months agokernel - Fix cpu_rotator in lwkt_alloc_thread()
Matthew Dillon [Thu, 28 Sep 2017 02:40:13 +0000 (19:40 -0700)]
kernel - Fix cpu_rotator in lwkt_alloc_thread()

* The cpu and rotator are signed.  Use an unsigned modulo to ensure
  that the resulting cpu is properly ranged.

12 months agoppp - Fix seg-fault on crypt failure
Matthew Dillon [Wed, 27 Sep 2017 21:51:48 +0000 (14:51 -0700)]
ppp - Fix seg-fault on crypt failure

* Fix an issue where the program seg-faults if crypt() returns
  NULL.  Return 0 (failure for this routine) in case of NULL

Submitted-by: lubos
12 months agocallout: Allocate per-cpu callout context on the owner cpu.
Sepherosa Ziehau [Wed, 27 Sep 2017 07:01:25 +0000 (15:01 +0800)]
callout: Allocate per-cpu callout context on the owner cpu.

Thread is not embedded in the per-cpu callout context.

12 months agocallout: Allocate wheel on owner cpu.
Sepherosa Ziehau [Wed, 27 Sep 2017 06:47:23 +0000 (14:47 +0800)]
callout: Allocate wheel on owner cpu.

12 months agoRevert "callout: Allocate callout wheel/thread on the owner cpu."
Sepherosa Ziehau [Wed, 27 Sep 2017 06:43:22 +0000 (14:43 +0800)]
Revert "callout: Allocate callout wheel/thread on the owner cpu."

This reverts commit 8def3b58c71a8b3527e2cc9aed97c1467dc0a74c.

It causes large amount of unnecessary IPIs to the last CPU during
some TCP related tests.  Needs more investigation.

12 months agoipfw: Add interface IP filter.
Sepherosa Ziehau [Wed, 27 Sep 2017 07:50:24 +0000 (15:50 +0800)]
ipfw: Add interface IP filter.

This eases src/dst matching if the IP address is assigned to the interface
dynamically, e.g. by DHCP.

12 months agoipfw(8): Fix comment
Sepherosa Ziehau [Wed, 27 Sep 2017 06:20:52 +0000 (14:20 +0800)]
ipfw(8): Fix comment

12 months agokernel - Fix rare allproc scan vs p_ucred race
Matthew Dillon [Wed, 27 Sep 2017 04:31:04 +0000 (21:31 -0700)]
kernel - Fix rare allproc scan vs p_ucred race

* This race can occur because p->p_ucred can change out from under
  an allproc scan when the allproc scan is filtering based on
  credentials.

* Access p->p_ucred via the per-process spinlock (p->p_spin).  Also
  maintain a  cache of the last ucred during the loop in order to
  avoid having to spin-lock every process.

* Add missing spinlock around p->p_ucred = NULL in exit1().  This
  is also only applicable to races against allproc scans since
  p_token is held during exit1().

Reported-by: mjg_
12 months agokernel - Fix unnecessary ucred duplication
Matthew Dillon [Wed, 27 Sep 2017 04:28:12 +0000 (21:28 -0700)]
kernel - Fix unnecessary ucred duplication

* Fix unnecessary ucred replication.  This is not a memory leak, but it
  is annoying.

* Replicated ucreds can build-up in the system (up to maxvnodes) due to
  to unlinked files.

* Fix by flagging unlinked files in np->n_flag and immediately recycling
  the related vnode in the inactive code if it has been flagged for
  removal.

12 months agocallout: Allocate callout wheel/thread on the owner cpu.
Sepherosa Ziehau [Tue, 26 Sep 2017 04:46:39 +0000 (12:46 +0800)]
callout: Allocate callout wheel/thread on the owner cpu.

12 months agocallout: Minor style changes
Sepherosa Ziehau [Tue, 26 Sep 2017 04:30:02 +0000 (12:30 +0800)]
callout: Minor style changes

12 months agopktgen: Allow building w/o INVARIANTS
Sepherosa Ziehau [Tue, 26 Sep 2017 00:49:01 +0000 (08:49 +0800)]
pktgen: Allow building w/o INVARIANTS

12 months agoethernet: Restructure vlan check.
Sepherosa Ziehau [Mon, 25 Sep 2017 23:40:33 +0000 (07:40 +0800)]
ethernet: Restructure vlan check.

12 months agoipflow: Use netisr APIs
Sepherosa Ziehau [Mon, 25 Sep 2017 23:14:06 +0000 (07:14 +0800)]
ipflow: Use netisr APIs

12 months agoipflow: Remove compat macro
Sepherosa Ziehau [Mon, 25 Sep 2017 22:17:38 +0000 (06:17 +0800)]
ipflow: Remove compat macro

12 months agosbin/hammer: Use uuid_compare(3) instead of bcmp(3)
Tomohiro Kusumi [Mon, 25 Sep 2017 20:19:48 +0000 (23:19 +0300)]
sbin/hammer: Use uuid_compare(3) instead of bcmp(3)

(missed ones from 118205ce)

12 months agokcollect - Final dbm support code
Matthew Dillon [Mon, 25 Sep 2017 21:12:59 +0000 (14:12 -0700)]
kcollect - Final dbm support code

* Fix time conversion issues and memory leaks

* Code cleanup

* Documentation cleanup (from swildner)

Submitted-by: htse (Harald Brinkhof)
12 months agoipflow: Utilize netisr_domsg_global
Sepherosa Ziehau [Mon, 25 Sep 2017 07:25:20 +0000 (15:25 +0800)]
ipflow: Utilize netisr_domsg_global

12 months agoipflow: Allocate ipflow context on its owner cpu.
Sepherosa Ziehau [Mon, 25 Sep 2017 06:51:41 +0000 (14:51 +0800)]
ipflow: Allocate ipflow context on its owner cpu.

12 months agoipflow: Use INTWAIT | NULLOK for kmalloc
Sepherosa Ziehau [Mon, 25 Sep 2017 06:02:33 +0000 (14:02 +0800)]
ipflow: Use INTWAIT | NULLOK for kmalloc

12 months agoipflow: No need to mark it cachealign.
Sepherosa Ziehau [Mon, 25 Sep 2017 06:01:21 +0000 (14:01 +0800)]
ipflow: No need to mark it cachealign.

ipflow is allocated on the owner cpu.

12 months agoipflow: Remove reference counting, which no longer applies.
Sepherosa Ziehau [Mon, 25 Sep 2017 05:58:25 +0000 (13:58 +0800)]
ipflow: Remove reference counting, which no longer applies.

12 months agoipflow: Stringent assertion.
Sepherosa Ziehau [Mon, 25 Sep 2017 05:07:02 +0000 (13:07 +0800)]
ipflow: Stringent assertion.

12 months agoroute: Minor style change.
Sepherosa Ziehau [Mon, 25 Sep 2017 05:05:31 +0000 (13:05 +0800)]
route: Minor style change.

12 months agopolling: Utilize netisr_domsg_global
Sepherosa Ziehau [Mon, 25 Sep 2017 04:47:22 +0000 (12:47 +0800)]
polling: Utilize netisr_domsg_global

12 months agopolling: No need to explicitly align io context and systimer context
Sepherosa Ziehau [Mon, 25 Sep 2017 04:41:37 +0000 (12:41 +0800)]
polling: No need to explicitly align io context and systimer context

12 months agopolling: Adjust comment
Sepherosa Ziehau [Mon, 25 Sep 2017 04:34:07 +0000 (12:34 +0800)]
polling: Adjust comment

12 months agopolling: Don't do direct input in critical section.
Sepherosa Ziehau [Mon, 25 Sep 2017 00:42:56 +0000 (08:42 +0800)]
polling: Don't do direct input in critical section.

12 months agokcollect - Add initial dbm support
Matthew Dillon [Sun, 24 Sep 2017 18:17:03 +0000 (11:17 -0700)]
kcollect - Add initial dbm support

* Fully implement the -b and -d options to allow a dbm file to
  be recorded / appended, and played back.

* Still needs a little fleshing out for scaling info and
  headers.

Submitted-by: htse (Harald Brinkhof)
12 months agosbin/hammer: Fix strncpy(3) length
Tomohiro Kusumi [Sun, 24 Sep 2017 15:22:28 +0000 (18:22 +0300)]
sbin/hammer: Fix strncpy(3) length

The last one is ok, but HAMMER userspace doesn't use strl variants
except for this, then just use strncpy(3) for better portability.

12 months agokernel: Remove no longer used FFS_ROOT option.
Sascha Wildner [Sun, 24 Sep 2017 12:39:15 +0000 (14:39 +0200)]
kernel: Remove no longer used FFS_ROOT option.

Last used in code removed in 8840cec90a57df5e7c0f84c3c3c1e9abea7f2632.

While here, remove some no longer necessary opt_ffs.h #includes.

12 months ago<machine/stdint.h>: Add __suseconds_t for suseconds_t definitions.
Sascha Wildner [Sun, 24 Sep 2017 11:30:30 +0000 (13:30 +0200)]
<machine/stdint.h>: Add __suseconds_t for suseconds_t definitions.

12 months agopolling: Implement direct input support.
Sepherosa Ziehau [Sat, 23 Sep 2017 03:19:26 +0000 (11:19 +0800)]
polling: Implement direct input support.

When "direct input" is enabled by driver, driver's RX polling handler
will run ethernet/ip/tcp processing directly, which avoids cache-miss
on mbufs themselves.  Currently it is enabled on ix(4) by default.

The normal IP forwarding performance is improved by %12, while the fast
IP forwarding performance is improved by 10%.  13.2Mpps is achieved for
dual side IP forwarding!

1 request/connection HTTP/1.1 performance and avg-latency stay same,
but the latency is further stablized:
1K  5.20ms  -> 4.60ms
8K  6.43ms  -> 5.76ms
16K 16.30ms -> 14.90ms

12 months agosbin/hammer: Cleanup header includes
Tomohiro Kusumi [Sat, 23 Sep 2017 20:06:17 +0000 (23:06 +0300)]
sbin/hammer: Cleanup header includes

12 months agosys/vfs/hammer: Use kuuid_compare() instead of bcmp()
Tomohiro Kusumi [Sat, 23 Sep 2017 20:43:52 +0000 (23:43 +0300)]
sys/vfs/hammer: Use kuuid_compare() instead of bcmp()

though kuuid_compare() is probably slower than bcmp() in most cases.
It's not performance critical part anyway.

12 months agohammer2 - Fix bug in hammer2_chain_indkey_dir()
Matthew Dillon [Sun, 24 Sep 2017 04:12:22 +0000 (21:12 -0700)]
hammer2 - Fix bug in hammer2_chain_indkey_dir()

* The shortcut in hammer2_chain_indkey_dir() ignores the
  possibilty that the key breakdown chosen may not result
  in the clearing out of any elements in the parent.  If this
  occurs, an insertion operation following the function
  will assert on too many elements.

* Remove the shotcut.

12 months agoUpdate files for file-5.32 import.
Sascha Wildner [Sat, 23 Sep 2017 19:15:53 +0000 (21:15 +0200)]
Update files for file-5.32 import.

12 months agoMerge branch 'vendor/FILE'
Sascha Wildner [Sat, 23 Sep 2017 19:23:05 +0000 (21:23 +0200)]
Merge branch 'vendor/FILE'

12 months agoRevert "Import file-5.22."
Sascha Wildner [Sat, 23 Sep 2017 19:22:44 +0000 (21:22 +0200)]
Revert "Import file-5.22."

This reverts commit 89a9c80e537ed7238142c9af2cdc03401742a18a.

For some reason the 5.22 upgrade was not git-merged, looks like
copied instead. Caused merge conflicts with 5.32.

12 months agoImport file-5.32. vendor/FILE
Sascha Wildner [Sat, 23 Sep 2017 19:13:08 +0000 (21:13 +0200)]
Import file-5.32.

See ChangeLog for details.

12 months agomicrouptime.9 microtime.9: Fix documentation of the get* function versions.
Imre Vadász [Sat, 23 Sep 2017 15:04:38 +0000 (17:04 +0200)]
microuptime.9 microtime.9: Fix documentation of the get* function versions.

The kern.timecounter sysctl tree doesn't exist nowadays, the getmicrotime(),
getnanotime(), getmicrouptime() and getnanouptime() functions always
return the less precise time.

12 months agosbin/newfs_hammer2: Fix typo in newfs_hammer2(8)
Tomohiro Kusumi [Sat, 23 Sep 2017 11:27:20 +0000 (14:27 +0300)]
sbin/newfs_hammer2: Fix typo in newfs_hammer2(8)

of of

12 months agousr.sbin/fstyp: Add initial HAMMER2 support
Tomohiro Kusumi [Fri, 22 Sep 2017 22:17:20 +0000 (01:17 +0300)]
usr.sbin/fstyp: Add initial HAMMER2 support

-l option and multiple/partial volumes are not supported yet.

12 months agosys/vfs/hammer: Add typedef hammer_uuid_t
Tomohiro Kusumi [Thu, 21 Sep 2017 16:06:37 +0000 (19:06 +0300)]
sys/vfs/hammer: Add typedef hammer_uuid_t

Add typedef for uuid_t for better portability,
similar to hammer_crc_t and other hammer_xxx_t.
(Some platforms have char[16] for uuid_t instead of struct value)

No functional changes.

12 months agosbin/hammer: Add uuid.c
Tomohiro Kusumi [Thu, 21 Sep 2017 16:06:16 +0000 (19:06 +0300)]
sbin/hammer: Add uuid.c

Add a simple wrapper over uuid functions for better portability,
similar to sys/vfs/hammer/hammer_crc.h (which helped implement
version 7 CRC).

No functional changes.

12 months agopsm: Drop bpsm%d device files. Instead support non-blocking reads on psm%d.
Imre Vadász [Sat, 23 Sep 2017 11:12:34 +0000 (13:12 +0200)]
psm: Drop bpsm%d device files. Instead support non-blocking reads on psm%d.

The /dev/psm%d vs. /dev/bpsm%d separation doesn't serve any clear purpose
nowadays. Userland can just use fcntl(2) to switch the fd to non-blocking
or blocking mode as needed.

12 months agohammer2 - Fix hammer2 snapshot operation
Matthew Dillon [Fri, 22 Sep 2017 16:27:04 +0000 (09:27 -0700)]
hammer2 - Fix hammer2 snapshot operation

* Bring the hammer2 snapshot code up-to-date with the pfs-create
  code.

* Fix initial inode number assignment for hammer2 snapshot code (it
  was starting at 1024 which obviously won't work).

* Correct hammer2_vop_ncreate() error code - it was not converting
  the hammer2 error code to a system error code.

12 months agopsm: Get rid of PSM_LEVEL_NATIVE, and the psmwrite method used with that.
Imre Vadász [Fri, 22 Sep 2017 15:46:45 +0000 (17:46 +0200)]
psm: Get rid of PSM_LEVEL_NATIVE, and the psmwrite method used with that.

* Nothing in userspace ever uses this feature. This apparently was intended
  to allow implementing the complete mouse packet parsing in userspace.

12 months agopsm: Remove dead unused code: psmpoll(), enable_lordless(), is_a_mouse().
Imre Vadász [Fri, 22 Sep 2017 12:21:52 +0000 (14:21 +0200)]
psm: Remove dead unused code: psmpoll(), enable_lordless(), is_a_mouse().

* The is_a_mouse() check method was already disabled in the original
  FreeBSD commit, which added the psm(4) driver
  (git b3062b5d6a9d9631bf6a1612e27107ea9aa6801d ).

13 months agoinet/inet6: Randomize local port
Sepherosa Ziehau [Fri, 22 Sep 2017 01:09:10 +0000 (09:09 +0800)]
inet/inet6: Randomize local port

Due to avoid lock intruction, this also improves connect(2)
performance a bit.

13 months agoarc4random: Make arc4random context per-cpu.
Sepherosa Ziehau [Thu, 21 Sep 2017 23:35:21 +0000 (07:35 +0800)]
arc4random: Make arc4random context per-cpu.

Critical section is commented out, no consumers from ISRs/ithreads.

13 months agohammer2 - Fix panic related to the accounting for pfs-create
Matthew Dillon [Fri, 22 Sep 2017 05:01:03 +0000 (22:01 -0700)]
hammer2 - Fix panic related to the accounting for pfs-create

* Properly disconnect the inode created by pfs-create from the spmp so it
  can be reassociated with the pmp.

* Do not allow the newly created inode to be emplaced on the spmp's sideq,
  which will cause a duplicate inode structure to be created if the
  pfs is then mounted.

Reported-by: Romick
13 months agohammer2 - Fix flush issues with unmounted PFSs and shutdown panic
Matthew Dillon [Fri, 22 Sep 2017 00:35:56 +0000 (17:35 -0700)]
hammer2 - Fix flush issues with unmounted PFSs and shutdown panic

* Fix flush and shutdown issues when unmounted PFS's are present.
  These PFSs do not get flushed by the filesystem sync code because
  they haven't been mounted, but may still contain modified or
  referenced chains, as well as sideq'd inodes.

* Fix some other cleanup issues when unmounting.  Clean out vchain.pmp
  and fchain.pmp for the spmp during the unmount scan, which fixes a
  hammer2 pfs_memory_*() panic.

Reported-by: yellowrabbit2010
13 months agoarc4random: Minor style changes.
Sepherosa Ziehau [Thu, 21 Sep 2017 07:04:18 +0000 (15:04 +0800)]
arc4random: Minor style changes.

Use uintX_t instead of u_intX_t.

13 months agox86: Use kmem_alloc3 for cpu0's ipiq
Sepherosa Ziehau [Thu, 21 Sep 2017 05:46:41 +0000 (13:46 +0800)]
x86: Use kmem_alloc3 for cpu0's ipiq

13 months agohammer2 - performance pass
Matthew Dillon [Thu, 21 Sep 2017 06:49:51 +0000 (23:49 -0700)]
hammer2 - performance pass

* Get rid of vfs.hammer2.cluster_write and stop using cluster_write()
  for the block device I/O.  This coupled into common unlock/lock
  situations on chains which would acquire and retire the DIO, and
  usually thus also the underlying buffer, many times before it
  really needed to be committed.

  This greatly reduces unnecessary writes to disk.

* Increase HAMMER2_FLUSH_DEPTH_LIMIT to 60.  It was set to 10 for
  debugging purposes.  This created an O(N^2) overhead situation
  in hammer2_flush().  20,000 dirty inodes would translate to
  30 million chain scans, resulting in cpu-bound stalls for long
  periods of time.

  Fixing this value reduces a 20,000 dirty inode flush to around
  200,000 chain scans (100x faster).

* Use hammer2_chain_ref_hold() and hammer2_chain_drop_unhold()
  to reduce the amount of buffer cache buffer cycling that occurs
  during a flush, by retaining the DIO associated with a parent
  chain across its unlock/recurse/relock sequence.

  The number of buffers held locked is limited by the flush recursion
  depth.

13 months agoipfw: Factor out fucntion to setup local variables.
Sepherosa Ziehau [Wed, 20 Sep 2017 05:40:08 +0000 (13:40 +0800)]
ipfw: Factor out fucntion to setup local variables.

13 months agoipfw: Add ipfrag filter.
Sepherosa Ziehau [Wed, 20 Sep 2017 00:21:58 +0000 (08:21 +0800)]
ipfw: Add ipfrag filter.

Unlike 'frag' filter, which only matches non-first IP fragments,
this filter matches all IP fragments.

13 months agoipfw: Remove unnecessary complexity
Sepherosa Ziehau [Wed, 20 Sep 2017 00:13:57 +0000 (08:13 +0800)]
ipfw: Remove unnecessary complexity

13 months agohammer2 - Remove debugging, adjust iocom
Matthew Dillon [Wed, 20 Sep 2017 00:31:03 +0000 (17:31 -0700)]
hammer2 - Remove debugging, adjust iocom

* Call hammer2_iocom_uninit() before we start cleaning up the hmp.

* Remove numerous debug messages.

13 months agokernel - Fix races in kern_dmsg.c (hammer2)
Matthew Dillon [Wed, 20 Sep 2017 00:29:42 +0000 (17:29 -0700)]
kernel - Fix races in kern_dmsg.c (hammer2)

* Fix kdmsg races during shutdown which can assert or panic

* Fixes numerous hammer2 assertions or panics related to unmounting,
  including mount failures due to missing labels.

13 months agokernel - Remove some kdmsg debugging
Matthew Dillon [Tue, 19 Sep 2017 21:20:25 +0000 (14:20 -0700)]
kernel - Remove some kdmsg debugging

* Remove '<blah> thread terminating' kdmsg debug messages.

13 months agokernel - support dummy reallocblks in devfs
Matthew Dillon [Tue, 19 Sep 2017 21:13:57 +0000 (14:13 -0700)]
kernel - support dummy reallocblks in devfs

* cluster_write() calls VOP_REALLOCBLKS() in certain situations.

* Supply a dummy for devfs's .vop_reallocblks to avoid a panic.

Reported-by: tuxillo
13 months agogpt(8): Add HAMMER and HAMMER2 support
François Tigeot [Tue, 19 Sep 2017 20:15:35 +0000 (22:15 +0200)]
gpt(8): Add HAMMER and HAMMER2 support

This makes it possible to create HAMMER or HAMMER2 partitions
with simple commands such as:

  gpt add -t hammer2 /dev/device

13 months agoboot/loader: Fix the 'crc' command to the intended code.
Sascha Wildner [Tue, 19 Sep 2017 18:24:03 +0000 (20:24 +0200)]
boot/loader: Fix the 'crc' command to the intended code.

It doesn't change the result, but fixes a cppcheck warning.

Reported-by: dcb
Fix-submitted-by: Lubos Boucek
Dragonfly-bug:    <https://bugs.dragonflybsd.org/issues/3060>

13 months agosbin/hammer: Use uuid_compare(3) instead of bcmp(3)
Tomohiro Kusumi [Sat, 16 Sep 2017 17:53:35 +0000 (20:53 +0300)]
sbin/hammer: Use uuid_compare(3) instead of bcmp(3)

13 months agosbin/newfs_hammer: Use uuid_create(3) instead of uuidgen(2)
Tomohiro Kusumi [Sat, 16 Sep 2017 16:02:55 +0000 (19:02 +0300)]
sbin/newfs_hammer: Use uuid_create(3) instead of uuidgen(2)

HAMMER userspace uses uuid_create(3) except for this one.
uuidgen(2) syscall isn't part of the specification.

13 months agosbin/newfs_hammer: Use hwarnx() instead of hwarn()
Tomohiro Kusumi [Sat, 16 Sep 2017 12:23:36 +0000 (15:23 +0300)]
sbin/newfs_hammer: Use hwarnx() instead of hwarn()

This one should be with x.

13 months agohammer2(8): Fix printf.
Sascha Wildner [Tue, 19 Sep 2017 14:23:12 +0000 (16:23 +0200)]
hammer2(8): Fix printf.