delphij [Mon, 25 Nov 2013 20:01:34 +0000 (20:01 +0000)]
MFC r246482 (rrs) + r246581:
This fixes a out-of-order problem with several of the newer
drivers. The basic problem was that the driver was pulling
the mbuf off the drbr ring and then when sending with xmit(),
encounting a full transmit ring. Thus the lower layer xmit()
function would return an error, and the drivers would then
append the data back on to the ring. For TCP this is a
horrible scenario sure to bring on a fast-retransmit.
The fix is to use drbr_peek() to pull the data pointer but
not remove it from the ring. If it fails then we either call
the new drbr_putback or drbr_advance method. Advance moves
it forward (we do this sometimes when the xmit() function
frees the mbuf). When we succeed we always call advance.
The putback will always copy the mbuf back to the top of the
ring. Note that the putback *cannot* be used with a
drbr_dequeue() only with drbr_peek(). We most of the time,
in putback, would not need to copy it back since most likey
the mbuf is still the same, but sometimes xmit() functions
will change the mbuf via a pullup or other call. So the
optimial case for the single consumer is to always copy it
back. If we ever do a multiple_consumer (for lagg?) we
will need a test and atomic in the put back possibly a
seperate putback_mc() in the ring buf.
avg [Mon, 25 Nov 2013 15:39:50 +0000 (15:39 +0000)]
MFC r258353: zfs page_busy: fix the boundaries of the cleared range
This is a fix for a regression introduced in r246293.
vm_page_clear_dirty expects the range to have DEV_BSIZE aligned boundaries,
otherwise it extends them. Thus it can happen that the whole page is
marked clean while actually having some small dirty region(s).
This commit makes the range properly aligned and ensures that only
the clean data is marked as such.
It would interesting to evaluate how much benefit clearing with DEV_BSIZE
granularity produces. Perhaps instead we should clear the whole page
when it is completely overwritten and don't bother clearing any bits
if only a portion a page is written.
jhb [Thu, 21 Nov 2013 20:09:44 +0000 (20:09 +0000)]
MFC 226145,226147,226148,226150,226151,226153,226157,226158,226164,226246,
226262,226329,226344,226608:
Merge most "infrastructure" changes to kdump to make other MFC's to add
new decodings, etc. easier:
- Some of the #defines or enums for which we auto-generate naming
functions may be wider than int, so use intmax_t throughout.
- Auto-generate kdump_subr.h.
- Use a switch statement instead of a giant if-else.
- Remove a lot of (void) casts.
- Bring ioctlname() in line with all the other *name() functions, which
actually print the name (or the numeric value, if they can't figure out
the correct name) instead of just returning a pointer to it. Also, since
ioctl numbers are not and probably never will be unique, drop support for
using a switch statement instead of an if/else chain.
- Mostly WARNS=6 clean.
- Update mkioctls to still work with both kdump and truss.
gjb [Mon, 18 Nov 2013 17:06:33 +0000 (17:06 +0000)]
MFC r257942, r258101:
r257942:
Fix a few style nits.
r258101:
Since the doc/ toolchain conversion to docbook 5.0, JADETEX
is no longer a valid option, so remove 'WITHOUT_JADETEX=yes'
from PBUILD_FLAGS.
While here, also remove 'WITHOUT_X11=yes', since it will
cause a dependency conflict by requiring both print/ghostscript9
and print/ghostscript9-nox11.
Switch to OPTIONSNG format (WITHOUT_* -> OPTIONS_UNSET='FOO'),
and unset the FOP option, which requires Java (although it is
disabled by default). Also unset the 'IGOR' option, since
textproc/igor is a validation tool, not necessarily a dependency
of the doc/ build itself.
While here, reduce the line length of PBUILD_FLAGS.
gjb [Mon, 18 Nov 2013 17:03:11 +0000 (17:03 +0000)]
MFC r257805, r257806, r257807:
r257805:
Add a 'mini-memstick.img' release target, which will use the
'bootonly.iso' components to create a smaller memory stick image.
This is useful for system recovery, where a full memstick.img image
is not necessarily needed (or wanted). In addition, it is possible to
do bootonly-style installation, where the base.txz, kernel.txz, etc.
are fetched from a remote source.
Provide backwards-compatible target (mini-memstick), to keep in sync
with the targets documented in release/Makefile.
r257806:
Remove extra target from 'memstick' in r257805.
r257807:
Update release(7) to include 'mini-memstick' target.
mav [Sat, 16 Nov 2013 15:41:54 +0000 (15:41 +0000)]
MFC r254787:
Remove locking from taskqueue_member(). The list of threads is static
during the taskqueue life cycle, so there is no need to protect it,
taking quite congested lock several more times for each ZFS I/O.
mav [Sat, 16 Nov 2013 10:43:02 +0000 (10:43 +0000)]
MFC r253647:
Decode some bits defined in AHCI 1.3.1 Device Sleep Technical Proposal.
For now this is only conmetics to report HBA capabilities (Haswell?).
jhb [Fri, 15 Nov 2013 15:08:53 +0000 (15:08 +0000)]
MFC 256293:
Sanitize the %eflags returned by BIOS routines. Some BIOS routines enter
protected mode and may leave protected-mode-specific flags like PSL_NT set
when they return to real mode. This can cause a fault when BTX re-enters
protected mode after the BIOS mode returns.
jhb [Thu, 14 Nov 2013 21:31:58 +0000 (21:31 +0000)]
MFC 255498:
- Document the UQUAD sysctl variants.
- Clarify that exactly one of the "access" flags is required and
list the optional flags in a separate list. Prefer bundling
CTLFLAG_TUN into the access flag by not documenting it as an
optional flag to set.
jhb [Thu, 14 Nov 2013 21:27:13 +0000 (21:27 +0000)]
MFC 255497:
Fix an off-by-one error when populating mincore(2) entries for
skipped entries. lastvecindex references the last valid byte,
so the new bytes should come after it.
jhb [Wed, 13 Nov 2013 18:33:14 +0000 (18:33 +0000)]
MFC 255248:
Use an unsigned long when indexing into mfchashtbl[] and mf6ctable[]. This
matches the types used when computing hash indices and the type of the
maximum size of mfchashtbl[].
jhb [Wed, 13 Nov 2013 17:08:37 +0000 (17:08 +0000)]
MFC 254699,255030:
Use tvtohz() to convert a socket buffer timeout to a tick value rather
than using a home-rolled version. The home-rolled version could result
in shorter-than-requested sleeps.
dim [Tue, 12 Nov 2013 18:43:35 +0000 (18:43 +0000)]
MFC r253917:
After r253839, which modifies ld's behaviour to not automatically pull
in needed libraries, change libc++.so into a linker script, so it can
automatically pull in libcxxrt.so.
[Note to stable/9 users: the above statement about ld's behaviour is not
(yet) applicable to the version of ld in 9.x, but this change will help
when building C++ programs with libc++, in combination with the ports
version of ld.]
gjb [Fri, 8 Nov 2013 02:31:37 +0000 (02:31 +0000)]
Remove evaluation of OSVERSION < 500000.
I hope to never have to build a release from a stable/5 machine.
While here, remove hard-coded lang/perl5.10, which is better
evaluated during compile-time (especially since lang/perl5.10 does
not exist in the ports/ tree).
This is a direct commit to stable/9, as this file does not exist in
higher branches.
dim [Thu, 7 Nov 2013 20:54:52 +0000 (20:54 +0000)]
MFC r257658:
For C++ programs, don't emit any explicit dependency to libstdc++.a or
libc++.a during the early build stages (bootstrap-tools, build-tools,
cross-tools), since it is not possible to know in advance which C++
library is available on the host system.
Instead, just use the bootstrap compiler's built-in default. This
should eventually make it possible to build stable/9 on head, or on
stable/10, which ship without libstdc++ by default.
jhb [Wed, 6 Nov 2013 20:58:04 +0000 (20:58 +0000)]
MFC 254287: Some small cleanups to the fixes in r180340:
- Set NOTE_TRACKERR before running filt_proc(). If the knote did not
have NOTE_FORK set in fflags when registered, then the TRACKERR event
could miss being posted.
- Don't pass the pid in to filt_proc() for NOTE_FORK events. The special
handling for pids is done knote_fork() directly and no longer in
filt_proc().
jhb [Wed, 6 Nov 2013 19:33:25 +0000 (19:33 +0000)]
MFC 254072:
Don't emit a spurious EVFILT_PROC event with no fflags set on process exit
if NOTE_EXIT is not being monitored. The rationale is that a listener
should only get an event for exit() if they registered interest via
NOTE_EXIT. This matches the behavior on OS X.
- Don't save the exit status on process exit unless NOTE_EXIT is being
monitored.
- Add an internal EV_DROP flag that requests kqueue_scan() to free the
knote without signalling it to userland and use this when a process
exits but the fflags in the knote is zero.
delphij [Tue, 5 Nov 2013 20:00:17 +0000 (20:00 +0000)]
MFC r257539:
When zero'ing out a buffer, make sure we are using right size.
Without this change, in the worst but unlikely case scenario, certain
administrative operations, including change of configuration, set or
delete key from a GEOM ELI provider, may leave potentially sensitive
information in buffer allocated from kernel memory.
We believe that it is not possible to actively exploit these issues, nor
does it impact the security of normal usage of GEOM ELI providers when
these operations are not performed after system boot.
Security: possible sensitive information disclosure
Submitted by: Clement Lecigne <clecigne google com>
jhb [Tue, 5 Nov 2013 19:54:13 +0000 (19:54 +0000)]
MFC 253656: Enhance the description of NOTE_TRACK:
- NOTE_TRACK has never triggered a NOTE_TRACK event from the parent pid.
If NOTE_FORK is set, the listener will get a NOTE_FORK event from
the parent pid, but not a separate NOTE_TRACK event.
- Explicitly note that the event added to monitor the child process
preserves the fflags from the original event.
- Move the description of NOTE_TRACKERR under NOTE_TRACK as it is not a
bit for the user to set (which is what this list pupports to be).
Also, explicitly note that if an error occurs, the NOTE_CHILD event
will not be generated.
yongari [Tue, 5 Nov 2013 06:48:58 +0000 (06:48 +0000)]
MFC r257490:
Perform media change after setting IFF_DRV_RUNNING flag. Without it,
driver would ignore the first link state update if controller
already established a link.
edwin [Tue, 5 Nov 2013 06:37:14 +0000 (06:37 +0000)]
MFC of 257681:
tzdata2013f
- Jordan goes to winter time on the last Friday in October.
- Tocantins in Brazil will not go into summer time in October.
- Indonesian time zones renames.
- Lots of cleanups in with regarding to links and historical data.
tzdata2013h
- Libya didn't go back to DST.
- Fix Morocco 2038 issue.
- Brazil/Acre and ?Western Amazonas are chaning timezones.
yongari [Mon, 4 Nov 2013 08:47:36 +0000 (08:47 +0000)]
MFC r257307:
Fix regression introduced in r235816.
r235816 triggered kernel panic or hang after warm boot.
Don't blindly restore BCE_EMAC_MODE media configuration in
bce_reset(). If driver is about to shutdown it will invoke
bce_reset() which in turn results in restoring BCE_EMAC_MODE
media configuration. This operation seems to confuse controller
firmware.
yongari [Mon, 4 Nov 2013 05:57:24 +0000 (05:57 +0000)]
MFC r257305:
Add preliminary support for RTL8168G, RTL8168GU and RTL8411B.
RTL8168GU has two variants(GMII and MII) but it uses the same chip
revision id. Driver checks PCI device id of controller and
sets internal capability flag(i.e. jumbo frame and link speed down
in WOL).
yongari [Mon, 4 Nov 2013 05:54:13 +0000 (05:54 +0000)]
MFC r257304:
Add support for new Gigabit PHY of RealTek.
I don't have a copy of data sheet so I'm not sure exact PHY model
name. Vendor's web page indicates RTL8251 is latest PHY so I used
the name. This PHY is used with RTL8168G, RTL8168GU and RTL8411B.
jimharris [Sun, 3 Nov 2013 20:55:24 +0000 (20:55 +0000)]
MFC r256154:
Log and then disable asynchronous notification of persistent events after
they occur.
This prevents repeated notifications of the same event.
Status of these events may be viewed at any time by viewing the
SMART/Health Info Page using nvmecontrol, whether or not asynchronous
events notifications for those events are enabled. This log page can
be viewed using:
nvmecontrol logpage -p 2 <ctrlr id>
Future enhancements may re-enable these notifications on a periodic basis
so that if the notified condition persists, it will continue to be logged.
melifaro [Wed, 30 Oct 2013 16:08:27 +0000 (16:08 +0000)]
MFC r256624:
Fix long-standing issue with incorrect radix mask calculation.
Usual symptoms are messages like
rn_delete: inconsistent annotation
rn_addmask: mask impossibly already in tree
routing daemon constantly deleting IPv6 default route
or inability to flush/delete particular prefix in ipfw table.
Changes:
* Assume 32 bytes as maximum radix key length
* Remove rn_init()
* Statically allocate rn_ones/rn_zeroes
* Make separate mask tree for each "normal" tree instead of system
global one
* Remove "optimization" on masks reusage and key zeroying
* Change rn_addmask() arguments to accept tree pointer (no users in base)
MFC changes:
* keep rn_init()
* create global mask tree, protected with mutex, for old rn_addmask
users (currently 0 in base)
* Add new rn_addmask_r() function (rn_addmask in head) with additional
argument to accept tree pointer
hselasky [Wed, 30 Oct 2013 06:18:54 +0000 (06:18 +0000)]
MFC r257206:
Fix a deadlock when trying to power off a USB device. The deadlock
happens because the code in question is trying to modify the parent
USB port registers outside the USB explore thread.
will [Mon, 28 Oct 2013 14:27:35 +0000 (14:27 +0000)]
MFC r248653: ZFS: Fix a panic while unmounting a busy filesystem.
This particular scenario was easily reproduced using a NFS export. When the
first 'zfs unmount' occurred, it returned EBUSY via this path, while
vflush() had flushed references on the filesystem's root vnode, which in
turn caused its v_interlock to be destroyed. The next time 'zfs unmount'
was called, vflush() tried to obtain this lock, which caused this panic.
Since vflush() on FreeBSD is a definitive call, there is no need to check
vfsp->vfs_count after it completes. Simply #ifdef sun this check.
jilles [Sun, 27 Oct 2013 21:49:52 +0000 (21:49 +0000)]
MFC r243731,r255303: libc: Allow setting close-on-exec in fopen/freopen/
fdopen.
This commit adds a new mode option 'e'.
For freopen() with a non-NULL path argument and fopen(), the close-on-exec
flag is set iff the 'e' mode option is specified. For freopen() with a NULL
path argument and fdopen(), the close-on-exec flag is turned on if the 'e'
mode option is specified and remains unchanged otherwise.
Although the same behaviour for fopen() can be obtained by open(O_CLOEXEC)
and fdopen(), this needlessly complicates the calling code.
delphij [Sat, 26 Oct 2013 19:54:28 +0000 (19:54 +0000)]
MFC r256646, r256767, r257038:
When installing updates, install new directories first and remove old
directories last.
Allow ~ in file names so libtool droppings in contrib don't break updates.
It has happened twice now, and is likely to happen again.
Be more selective when filtering for lib*.so.N files. These are deleted
at the end of the upgrade process, after warning users to upgrade any
3rd party software (e.g., from the ports tree) which might link to the
libraries being removed.
dim [Sat, 26 Oct 2013 11:56:51 +0000 (11:56 +0000)]
MFC r256157:
Now our binutils's assembler supports the Intel Random Number Generator
extensions, we can change the .byte directives in sys/dev/random/ivy.c
to plain 'rdrand' mnemonics. This already worked for clang users, but
now it will also work for gcc users.
kib [Fri, 25 Oct 2013 17:15:57 +0000 (17:15 +0000)]
MFC r256504:
Add a sysctl kern.disallow_high_osrel which disables executing the
images compiled on the world with higher major version number than the
high version number of the booted kernel. Default to disable.
kib [Fri, 25 Oct 2013 17:04:46 +0000 (17:04 +0000)]
MFC r256502:
Similar to debug.iosize_max_clamp sysctl, introduce
devfs_iosize_max_clamp sysctl, which allows/disables SSIZE_MAX-sized
i/o requests on the devfs files.
delphij [Fri, 25 Oct 2013 15:43:59 +0000 (15:43 +0000)]
MFC r253816: MFV r253780:
To quote Illumos #3875:
The problem here is that if we ever end up in the error
path, we drop the locks protecting access to the zfsvfs_t
prior to forcibly unmounting the filesystem. Because z_os
is NULL, any thread that had already picked up the zfsvfs_t
and was sitting in ZFS_ENTER() when we dropped our locks
in zfs_resume_fs() will now acquire the lock, attempt to
use z_os, and panic.
Illumos ZFS issues:
3875 panic in zfs_root() after failed rollback
hselasky [Fri, 25 Oct 2013 06:48:57 +0000 (06:48 +0000)]
MFC r256750:
Improve XHCI stability. When a command timeout happens, the command
should be aborted else the command queue can stop. Refer to section
"4.6.1.2" of the XHCI specification.
bdrewery [Thu, 24 Oct 2013 10:53:35 +0000 (10:53 +0000)]
MFC r256842:
Fix 'make delete-old-libs' and 'make check-libs' to delete .debug
files created by WITH_DEBUG_FILES. Also cleanup .symbols files from
the period between r244236 when .symbols were supported and r251512
when they were renamed to .debug.
Only propose to delete a .debug file if the corresponding library
itself was deleted already.
mav [Thu, 24 Oct 2013 10:31:53 +0000 (10:31 +0000)]
MFC r256533:
Unhide "Serial Number" lines from bootverbose. That information may
be useful for system administration to have in hard copy (in logs) if
one of several devices suddenly dies.