Sepherosa Ziehau [Mon, 16 Oct 2017 04:07:45 +0000 (12:07 +0800)]
kern: Remove ncpus2 and friends.
They were no longer used, after netisr_ncpus was delployed.
Reminded-by: dillon@
Sepherosa Ziehau [Mon, 16 Oct 2017 03:44:45 +0000 (11:44 +0800)]
mpls: Use netisr_ncpus
Reminded-by: dillon@
Sascha Wildner [Sun, 15 Oct 2017 20:52:51 +0000 (22:52 +0200)]
Update the pciconf(8) database.
October 12, 2017 snapshot from http://pciids.sourceforge.net/
Sascha Wildner [Sun, 15 Oct 2017 11:07:04 +0000 (13:07 +0200)]
LINT64: Sort vmx a bit better.
Matthew Dillon [Sun, 15 Oct 2017 07:44:38 +0000 (00:44 -0700)]
Revert "libthread_xu - Wakeup all waiters"
This reverts commit
de7ba607e4500e7df6ade3916977cc8a91e1b4e9.
* Didn't intend to push this.
Sepherosa Ziehau [Sat, 30 Sep 2017 06:39:48 +0000 (14:39 +0800)]
ipfw: Implement state based "redirect", i.e. without using libalias.
Redirection creates two states, i.e. one before the translation (xlat0)
and one after the translation (xlat1). If the hash of the translated
packet indicates that it is owned by a remote CPU:
- If the packet triggers the state pair creation, the 'xlat1' will be
piggybacked by the translated packet, which will be forwarded to the
remote CPU for further evalution. And the 'xlat1' will be installed
on the remote CPU before the evalution of the translated packet.
- Else only the translated packet will be forwarded to the remote CPU
for further evalution.
The 'xlat1' is called the slave state, which will be deleted only when
the 'xlat0' (the master state) is deleted. The state pair is always
deleted on the CPU owning the 'xlat1'; the 'xlat0' will be forwarded
there.
The reference counting of the state pair is maintained independently
in each state, the memory of the state pair will be freed only after
the sum of the counter in each state reaches 0. This avoids expensive
per-packet atomic ops.
As far as I have tested, this implementation of "redirect" does _not_
introduce any noticeable performance reduction, latency increasing or
latency destability.
This commit makes most of the necessary bits for NAT ready too.
Matthew Dillon [Sun, 15 Oct 2017 07:13:42 +0000 (00:13 -0700)]
libthread_xu - Wakeup all waiters
* For now punt on trying to wakeup an optimized numbers of waiters.
Wake up all waiters and let them sort it out.
* This may fix specific count races in threaded programs using
pthread mutexes.
Matthew Dillon [Sat, 14 Oct 2017 22:28:12 +0000 (15:28 -0700)]
hammer2 - Handle error on rename in media out of space case
* Process the error code from hammer2_chain_delete() in
hammer2_xop_nrename() to ensure that we do not try to reattach
the chain under another parent.
Reported-by: arcade (Bug #3055)
Matthew Dillon [Sat, 14 Oct 2017 21:18:39 +0000 (14:18 -0700)]
sshd - Disable tunneled clear text passwords by default
* Reapply
1cb3a32c13b and
c866a462b3. sshd on DragonFlyBSD defaults
to disabling cleartext passwords by default.
Reminded-by: ivadasz
Sascha Wildner [Sat, 14 Oct 2017 19:06:14 +0000 (21:06 +0200)]
cpdup(1): Some improvements.
* Make cpdup retry failed rmdirs after chflags. It already does this
for remove().
* When deciding whether to copy a file, cpdup should ignore the
UF_ARCHIVE file flag. If that flag is supported by the destination
file system but it's cleared on a source file, then multiple
invocations of cpdup would all copy the source file because its
flags wouldn't match. OTOH, if the destination filesystem doesn't
support UF_ARCHIVE, then there's no point in cpdup setting it.
Submitted-by: Will Andrews <will@firepipe.net>
Dragonfly-bug: https://bugs.dragonflybsd.org/issues/2987
https://bugs.dragonflybsd.org/issues/2988
https://bugs.dragonflybsd.org/issues/3067
Matthew Dillon [Sat, 14 Oct 2017 17:59:30 +0000 (10:59 -0700)]
hammer2 - Slightly reduce LZ4 output buffer limit
* LZ4_compress_limitedOutput() appears to be able to overrun the
supplied buffer.
* Slightly reduce the LZ4 output buffer limit from a 4-byte alignment
to an 8-byte alignment to try to fix the problem.
Lubos Boucek [Fri, 13 Oct 2017 21:33:01 +0000 (21:33 +0000)]
Fix additional cases of seg-faults on crypt(3) failure
* On failure, crypt(3) returns NULL, which is then used as a
strcmp(3) argument
opieftpd.c and opiesu.c are not actually used anywhere.
Sascha Wildner [Sat, 14 Oct 2017 08:48:04 +0000 (10:48 +0200)]
rc.8: Clarify foo.sh behavior.
Improve wording a bit. See NetBSD's revision 1.38.
Reported-by: Aaron LI <aly@aaronly.me>
Aaron LI [Fri, 13 Oct 2017 04:26:29 +0000 (12:26 +0800)]
disklabel64: Fix an error message
Sascha Wildner [Sat, 14 Oct 2017 08:38:45 +0000 (10:38 +0200)]
ifconfig(8): Add 'lscan'. Like 'scan', but displays long SSIDs.
Submitted-by: Max Herrgard <herrgard@gmail.com>
Matthew Dillon [Sat, 14 Oct 2017 06:14:31 +0000 (23:14 -0700)]
mkinitrd - Add missing /var/db
* dhclient also needs /var/db to exist, make sure it does.
Reported-by: amonk
Matthew Dillon [Sat, 14 Oct 2017 05:39:31 +0000 (22:39 -0700)]
mkinitrd - Add missing /var/empty
* /var/empty is required by dhclient, which will SIGHUP itself
without it.
Reported-by: amonk
Matthew Dillon [Sat, 14 Oct 2017 04:44:06 +0000 (21:44 -0700)]
kernel - Rearrange namecache globals a bit
* Make sure ncspin and ncneglist are in the same cache line, and
do not overlap other globals in that cache line.
Suggested-by: mjg_
Matthew Dillon [Sat, 14 Oct 2017 04:41:46 +0000 (21:41 -0700)]
test - Cleanup pipe2
* Cleanup the pipe2 code a bit
Matthew Dillon [Fri, 13 Oct 2017 01:33:48 +0000 (18:33 -0700)]
Import OpenSSH-7.6p1
* Adjust build to match import
Matthew Dillon [Fri, 13 Oct 2017 01:32:28 +0000 (18:32 -0700)]
Import OpenSSH-7.6p1
* Import OpeNSSH-7.6p1. Couldn't really merge from the vendor branch
so just brought it in.
* Adjustments for WARNS issues
Tomohiro Kusumi [Thu, 12 Oct 2017 20:03:00 +0000 (23:03 +0300)]
usr.sbin/fstyp: Update fstyp(8) for HAMMER2
Tomohiro Kusumi [Thu, 12 Oct 2017 20:08:52 +0000 (23:08 +0300)]
sbin/newfs_hammer2: Add missing free() for uuid_to_string'd strings
Tomohiro Kusumi [Thu, 12 Oct 2017 19:57:45 +0000 (22:57 +0300)]
sbin/newfs_hammer2: Fix compile-time warning on Linux distros (gcc6)
--
warning: pointer targets in passing argument 1 of 'snprintf' differ in signedness [-Wpointer-sign]
warning: pointer targets in passing argument 1 of 'strlen' differ in signedness [-Wpointer-sign]
Tomohiro Kusumi [Thu, 12 Oct 2017 19:48:11 +0000 (22:48 +0300)]
sbin/newfs_hammer2: Check S_ISREG()
The comment says as follows, so check S_ISREG().
/* Allow the formatting of regular files as HAMMER2 volumes */
This is also what the same function in HAMMER1 does.
Sascha Wildner [Thu, 12 Oct 2017 08:16:06 +0000 (10:16 +0200)]
<netdb.h>: Adjust comment a bit.
Sascha Wildner [Thu, 12 Oct 2017 08:13:31 +0000 (10:13 +0200)]
libc/net: Add NI_NUMERICSCOPE flag for getnameinfo().
Code to handle it is already present in getnameinfo() but we
were missing the flag so far.
See http://pubs.opengroup.org/onlinepubs/
9699919799/basedefs/netdb.h.html
Thomas Nikolajsen [Wed, 11 Oct 2017 23:12:47 +0000 (01:12 +0200)]
Merge commit 'crater/master'
Thomas Nikolajsen [Wed, 11 Oct 2017 23:11:00 +0000 (01:11 +0200)]
Merge commit 'crater/master'
Thomas Nikolajsen [Wed, 11 Oct 2017 23:03:46 +0000 (01:03 +0200)]
systat.1: Update man page: sync to current program & improve markup a bit
Substantial changes has happened, especially for vmstat display.
Sascha Wildner [Wed, 11 Oct 2017 20:05:26 +0000 (22:05 +0200)]
kernel/atkbdc: Fix a prototype.
Sascha Wildner [Wed, 11 Oct 2017 20:04:43 +0000 (22:04 +0200)]
kernel/cam: Add some missing parameter names.
Just like the rest of the file.
Sascha Wildner [Wed, 11 Oct 2017 17:31:25 +0000 (19:31 +0200)]
<vfs/hammer2/hammer2.h>: Fix parameter names in two prototypes.
Discussed-with: dillon
Sascha Wildner [Wed, 11 Oct 2017 14:55:23 +0000 (16:55 +0200)]
kernel: Simplify various redundant conditions.
Found-by: cppcheck
One was reported by dcb in <https://bugs.dragonflybsd.org/issues/3078>.
Matthew Dillon [Tue, 10 Oct 2017 22:38:08 +0000 (15:38 -0700)]
libc - Bring in s_ceill.c v1.2 from OpenBSD (2)
* Note, correction, v1.3 from OpenBSD, not v1.2
* Restore a cast that we need to compile with our higher WARNS level.
Reported-by: marino, xenu
Lubos Boucek [Mon, 2 Oct 2017 02:16:10 +0000 (02:16 +0000)]
kernel/mrsas: Simplify redundant conditions and remove never used variable
Reported-by: dcb
Matthew Dillon [Tue, 10 Oct 2017 02:17:32 +0000 (19:17 -0700)]
libc - Bring in s_ceill.c v1.2 from OpenBSD
fix a case where ceill() returns 1.0L: in the x86 extended precision format
the fraction part has no implicit bit.
Reported-by: xenu
Taken-from: OpenBSD
Sascha Wildner [Sun, 8 Oct 2017 07:47:58 +0000 (09:47 +0200)]
hammer2.8/pthread_attr_setaffinity_np.3: Fix mdoc issues.
Thomas Nikolajsen [Sat, 7 Oct 2017 14:14:52 +0000 (16:14 +0200)]
disklabel64.8: Add HAMMER2 fstype info.
Thomas Nikolajsen [Sat, 7 Oct 2017 14:09:36 +0000 (16:09 +0200)]
periodic.conf.5: Add hammer2 variables.
Add description for periodic HAMMER2 script variables: 161.clean_hammer2.
While here add HAMMER man pages to SEE ALSO section.
Thomas Nikolajsen [Sat, 7 Oct 2017 13:53:37 +0000 (15:53 +0200)]
etc/periodic/daily/161.clean-hammer2: Fix typo
pfslist variable for HAMMER, not HAMMER2 was used.
This will typically have no effect, as pfslist is typically empty.
Thomas Nikolajsen [Sat, 7 Oct 2017 13:19:41 +0000 (15:19 +0200)]
periodic.conf: Fix typo in comment
Thomas Nikolajsen [Sat, 7 Oct 2017 13:13:11 +0000 (15:13 +0200)]
mount_hammer2(8): Add man page.
Matthew Dillon [Fri, 6 Oct 2017 05:59:40 +0000 (22:59 -0700)]
kernel - Refuse to swapoff under certain conditions
* Both tmpfs and vn can't handle swapoff's method of bringing pages
back in from the swap partition being decomissioned.
* Fixing this properly is fairly involved. The normal swapoff procedure
is to page swap into the related VM object, but tmpfs and vn use their
VM objects ONLY to track swap blocks and not for vm_page manipulation,
so that just won't work. In addition, the swap code may associate
a swap block with a VM object before issuing the write I/O to page
out the data, and the swapoff code's asynchronous pagein might cause
problems.
For now, just make sure that swapoff refuses to remove the partition
under these conditions, so it doesn't blow up tmpfs or vn.
Matthew Dillon [Fri, 6 Oct 2017 01:57:33 +0000 (18:57 -0700)]
tmpfs - Fix bug in call to vinitvmio()
* TMPFS_BLKMASK was being passed to vinitvmio() instead of
TMPFS_BLKSIZE. It is unclear if this caused any particular
issue other than an occasional console warning. Fixed.
Matthew Dillon [Thu, 5 Oct 2017 20:46:54 +0000 (13:46 -0700)]
kernel - Change index fields from unsigned to signed
* We use a signed trick for (j), fix the code so it actually works.
* The chipset field used to index (i) cannot exceed 1024 anyway.
Reported-by: lubos Bug #3020
Lubos Boucek [Sat, 23 Sep 2017 07:12:28 +0000 (07:12 +0000)]
Fix seg-faults on crypt(3) failure
Lubos Boucek [Fri, 22 Sep 2017 22:27:18 +0000 (22:27 +0000)]
Improve kdump.1 and ktrace.1
Aaron LI [Wed, 27 Sep 2017 10:24:05 +0000 (18:24 +0800)]
nologin(8): Sync with FreeBSD; Symlink as /usr/sbin/nologin
* Sync "nologin.c" with FreeBSD. Login attempts are logged into syslog.
* Create symlink "/usr/sbin/nologin" to "/sbin/nologin". FreeBSD
(and Linux) installs "nologin" at "/usr/sbin/nologin", and the users
created by DPorts/packages also use "/usr/sbin/nologin" (see
"/usr/dports/UIDs").
* Statically link "nologin" as done by FreeBSD.
Sascha Wildner [Thu, 5 Oct 2017 18:16:24 +0000 (20:16 +0200)]
camcontrol(8): Check scsiserial()'s error, too.
After some testing with devices that have no serial number, it looks
like this is safe to add nowadays.
Reported-by: dcb
Submitted-by: Lubos Boucek <bouceklubos@gmail.com>
Dragonfly-bug: <https://bugs.dragonflybsd.org/issues/3059>
Sepherosa Ziehau [Thu, 5 Oct 2017 06:06:11 +0000 (14:06 +0800)]
socket: Limit the number of accepted sockets that kevent reports.
By default it is limited to 32. It can be changed through:
sysctl kern.ipc.soavailconn=X
This change does _not_ affect userland using accept(2) in the following
way:
for (;;) {
s = accept();
if (s < 0 && errno == EAGAIN)
break;
/* Processing accepted socket. */
}
This change only affects optimized userland using kevent.data to avoid
extra accept(2) syscall:
for (i = 0; i < kevent.data; ++i) {
s = accept();
/* Processing accepted socket. */
}
The above logic is applied by nginx. However, due to the cost of the
"Processing accepted socket" parts, this kinda of loop can increase
latency and destablize latency.
The comparison w/ 30K concurrent connections, 1 request/connection.
1K web object
| performance | lat-avg | lat-stdev | lat-99%
---------+--------------+----------+-----------+----------
no limit | 210279.88tps | 59.19ms | 4.60ms | 69.02ms
---------+--------------+----------+-----------+----------
32 limit | 217599.01tps | 32.00ms | 2.35ms | 35.59ms
========
8K web object
| performance | lat-avg | lat-stdev | lat-99%
---------+--------------+----------+-----------+----------
no limit | 180627.61tps | 70.53ms | 4.95ms | 80.61ms
---------+--------------+----------+-----------+----------
32 limit | 186324.41tps | 37.41ms | 4.81ms | 48.69ms
========
16K web object
| performance | lat-avg | lat-stdev | lat-99%
---------+--------------+----------+-----------+----------
no limit | 138667.84tps | 95.93ms | 14.90ms | 135.47ms
---------+--------------+----------+-----------+----------
32 limit | 138778.11tps | 60.90ms | 11.80ms | 92.07ms
This change significantly reduces average latency and .99 latency,
and performance is improved slightly.
Sascha Wildner [Wed, 4 Oct 2017 17:01:17 +0000 (19:01 +0200)]
Bring in vmx(4) (VMware virtual network driver, aka vmxnet3).
Some features are still disabled, namely LRO, TSO, VLAN_HWFILTER,
and MSI-X support. That being said, it works and seems stable.
Tested-by: swildner (VMware Player 7.1.4 build-3848939)
tuxillo (VMware ESXi 6.5.0 (Build 4887370))
Taken-from: FreeBSD (in turn based on OpenBSD's driver)
Matthew Dillon [Tue, 3 Oct 2017 01:42:34 +0000 (18:42 -0700)]
kernel - Fix GCC reordering problem with td_critcount
* Wrap all ++td->td_critcount and --td->td_critcount use cases
with an inline which executes cpu_ccfence() before and after,
to guarantee that GCC does not try to reorder the operation around
critical memory changes.
* This fixes a race in lockmgr() and possibly a few other places
too.
Matthew Dillon [Sun, 1 Oct 2017 18:18:49 +0000 (11:18 -0700)]
kernel - Fix rare lockmgr() state transition (2)
* Fix two lock timeout cases for LK_EXCLUPGRADE and LK_UPGRADE, and
fix a bug in undo_upreq().
* A tsleep failure (such as the LK_TIMELOCK case via
vm_map_lock_read_to()) was not properly backing-out a LKC_UPREQ,
resulting in a situation where the lock becomes exclusively owned
by nobody and deadlocks against all-comers. Fix by properly
calling undo_upreq().
* Fix a bug in undo_upreq() itself. When undoing a granted UPREQ,
the lockholder must be set prior to releasing the now-granted
exclusive lock in order to avoid an assertion panic.
* While we are at it, replace a weird cmpset count,count with a
fetchadd(count, 0).
Tomohiro Kusumi [Sun, 1 Oct 2017 12:37:54 +0000 (15:37 +0300)]
sbin/hammer: Fix compile-time warning by some Linux distros
--
test_dupkey.c: In function 'main':
test_dupkey.c:54:1: warning: control reaches end of non-void function [-Wreturn-type]
}
Sascha Wildner [Sun, 1 Oct 2017 10:09:02 +0000 (12:09 +0200)]
Fix some minor issues in several manual pages.
Sascha Wildner [Sun, 1 Oct 2017 09:35:59 +0000 (11:35 +0200)]
X86_64_GENERIC: Fix indent.
Matthew Dillon [Sun, 1 Oct 2017 01:17:55 +0000 (18:17 -0700)]
kernel - Improve tsleep/wakeup queue collisions (3)
* Doh, fix variable declaration.
Matthew Dillon [Sun, 1 Oct 2017 01:11:08 +0000 (18:11 -0700)]
kernel - Improve tsleep/wakeup queue collisions (2)
* Fix SMP race. When testing ident0 against -1 or the ident value
as stored in a remote cpu's structure, ident0 must be loaded from memory
once to avoid a cross-over race.
Matthew Dillon [Sat, 30 Sep 2017 22:12:30 +0000 (15:12 -0700)]
kernel - Fix rare lockmgr() state transition
* When lockmgr() is releasing the last count on an exclusive lock
with an upgrade request pending, and the atomic op fails, the
code fails to properly retry. Fixed by properly retrying.
* This situation should not be possible to even get into, hence 'rare'.
It requires UPREQ to be set while the lock is being held exclusively,
which should never be possible because there is no shared lock holder
in that case who might attempt to upgrade.
I checked race conditions when multiple shared holders attempt
to upgrade but all that happens is that one will release and
acquire a normal exclusive lock instead.
Sascha Wildner [Sat, 30 Sep 2017 21:31:36 +0000 (23:31 +0200)]
mandoc(1): Changed OSNAME to match 5.1.
Sascha Wildner [Sat, 30 Sep 2017 21:18:41 +0000 (23:18 +0200)]
Fix some Xr punctuation issues in several manual pages.
Sascha Wildner [Sat, 30 Sep 2017 21:12:11 +0000 (23:12 +0200)]
Use standard section name 'AUTHORS' in several manual pages.
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
Tomohiro Kusumi [Sat, 30 Sep 2017 11:21:25 +0000 (14:21 +0300)]
sbin/mount_hammer: Remove redundant test_volumes() on mount(2) failure
This code was originally added by
1a607e3e which added signature check
when mount(2) failed, and later modified by several commits including
1e297b34 which copied code from sbin/hammer/ondisk.c. But as mentioned
in
1e297b34, this entire checking wasn't needed (as it's in dmesg),
or it may even show the wrong reason of failure.
The correct way is to just type dmesg, and see what the kernel said,
instead of resorting to wild guess in userspace by reading volume header
*after* mount(2) failure (If you really want this it should be done
*before* mount(2)).
This originally didn't exist till 2009 and that was better.
Tomohiro Kusumi [Sat, 30 Sep 2017 11:17:32 +0000 (14:17 +0300)]
sys/vfs/hammer: Check root voume# is 0 on mount(2)
We could check this in addition to the existing conditional to
know the volume is the root volume. /sbin/hammer and /sbin/mount_hammer
do this, so why not.
If failed here, the volume which has just been inserted to the rbtree
(and other volumes already inserted) are going to be removed by
hammer_free_hmp().
Tomohiro Kusumi [Sat, 30 Sep 2017 10:12:51 +0000 (13:12 +0300)]
sbin/hammer: Add UUID string on error and blockmap,show
to make clear whether ondisk vol_fstype UUID is simply wrong or
due to byte order of the first 8 bytes (4-2-2 part).
Tomohiro Kusumi [Sat, 30 Sep 2017 09:29:07 +0000 (12:29 +0300)]
sbin/hammer: Minor cleanup
The prototype was originally brought (copied) from uuid(3).
Matthew Dillon [Sat, 30 Sep 2017 18:06:49 +0000 (11:06 -0700)]
tmpfs - Conditionalize atomic adds on mount structure
* Conditionalize tracking of the total pages allocated to avoid
the atomic op when the delta change is 0.
Suggested-by: mjg_
Sascha Wildner [Sat, 30 Sep 2017 17:45:42 +0000 (19:45 +0200)]
<sys/param.h>: Fix __DragonFly_version.
Reported-by: zrj
Sascha Wildner [Sat, 30 Sep 2017 17:29:42 +0000 (19:29 +0200)]
Update UPDATING a bit for the disabling of FFS_ROOT.
Sascha Wildner [Sat, 30 Sep 2017 14:47:04 +0000 (16:47 +0200)]
rc.conf.5: Improve moused_type description a bit more.
Justin C. Sherrill [Sat, 30 Sep 2017 00:11:33 +0000 (20:11 -0400)]
5.1 commit.
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)
Sepherosa Ziehau [Fri, 29 Sep 2017 06:38:35 +0000 (14:38 +0800)]
arp: Allocate context memory on owner cpu.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:30:46 +0000 (09:30 +0800)]
syncache: Timer queue iteration is MPsafe; no need to use marker.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:03:46 +0000 (09:03 +0800)]
syncache: Move local variables close their usage.
Sepherosa Ziehau [Fri, 29 Sep 2017 01:02:03 +0000 (09:02 +0800)]
syncache: inpcb will never be NULL.
Sepherosa Ziehau [Fri, 29 Sep 2017 00:11:18 +0000 (08:11 +0800)]
syncache: Resurrect net.inet.tcp.syncache.count
Sepherosa Ziehau [Thu, 28 Sep 2017 23:38:19 +0000 (07:38 +0800)]
syncache: Allocate syncache context on the owner cpu.
Sepherosa Ziehau [Thu, 28 Sep 2017 23:10:19 +0000 (07:10 +0800)]
syncache: Group timeout queue related fields together.
Sepherosa Ziehau [Thu, 28 Sep 2017 22:44:50 +0000 (06:44 +0800)]
syncache: Simplify timer message
Sepherosa Ziehau [Thu, 28 Sep 2017 22:15:32 +0000 (06:15 +0800)]
syncache: Remove unnecessary struct field
Sepherosa Ziehau [Thu, 28 Sep 2017 21:59:58 +0000 (05:59 +0800)]
syncache: Staticize syncache_lookup
Sepherosa Ziehau [Thu, 28 Sep 2017 21:51:34 +0000 (05:51 +0800)]
syncache: Stringent assertion.
Sepherosa Ziehau [Thu, 28 Sep 2017 19:37:56 +0000 (03:37 +0800)]
kern: Allocate sleep hash on owner cpu.
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.
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).
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
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.
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.
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.
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.
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).
Sepherosa Ziehau [Wed, 27 Sep 2017 23:20:26 +0000 (07:20 +0800)]
callout: Embed thread in per-cpu callout context.
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
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>
Sepherosa Ziehau [Wed, 27 Sep 2017 19:29:44 +0000 (03:29 +0800)]
kern: Add read-only sysctl for sleep queue table size
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.
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