rmacklem [Fri, 31 Dec 2010 14:03:57 +0000 (14:03 +0000)]
MFC: r216510
Fix two vnode locking problems in nfsd_recalldelegation() in the
experimental NFSv4 server. The first was a bogus use of VOP_ISLOCKED()
in a KASSERT() and the second was the need to lock the vnode for the
nfsrv_checkremove() call. Also, delete a "__unused" that was bogus,
since the argument is used.
bschmidt [Fri, 31 Dec 2010 12:48:43 +0000 (12:48 +0000)]
MFC r216049:
Some drivers rely on the existence of certain keys. The Atheros 9xxx
driver for example requests the NetCfgInstanceId but doesn't check the
returned status code and will happily access random memory instead.
pjd [Thu, 30 Dec 2010 09:45:26 +0000 (09:45 +0000)]
MFC r216565,r216631,r216632,r216633,r216774:
r216565:
Reduce lock scope a little.
r216631:
On error, unbusy file system and jump to the end, so we won't try to unlock
NULL *vpp.
Reviewed by: kib
r216632:
- Move pubflag and lockflag handling from nfsrv_fhtovp() to nfs_namei() -
this is the only place that is different from all the other nfsrv_fhtovp()
consumers.
This simplifies nfsrv_fhtovp() a bit and also eliminates one
vn_lock/VOP_UNLOCK() cycle in case of NFSv3.
- Implement NFSRV_FLAG_BUSY flag for nfsrv_fhtovp() that tells it to leave
mount point busy.
Reviewed by: kib
r216633:
Use newly added NFSRV_FLAG_BUSY flag for nfsrv_fhtovp() to keep mount point
busy. This fixes a race where we can pass invalid mount point to VFS_VGET()
via vp->v_mount when exported file system was forcibly unmounted between
nfsrv_fhtovp() and VFS_VGET().
Reviewed by: kib
r216774:
ZFS might not return monotonically increasing directory offset cookies,
so turn off UFS-specific hack that assumes so in ZFS case.
Before the change we can miss returning some directory entries to a
NFS client.
I believe that the hack should be moved to ufs_readdir(), but until we find
somebody who will do it, turn it off for ZFS in NFS server code.
rmacklem [Wed, 29 Dec 2010 02:54:41 +0000 (02:54 +0000)]
MFC: r216691
Since VOP_READDIR() for ZFS does not return monotonically
increasing directory offset cookies, disable the UFS related
loop that skips over directory entries at the beginning of
the block for the experimental NFS server. This loop is
required for UFS since it always returns directory entries
starting at the beginning of the block that
the requested directory offset is in. In discussion with pjd@
and mckusick@ it seems that this behaviour of UFS should maybe
change, with this fix being an interim patch until then.
This patch only fixes the experimental server, since pjd@ is
working on a patch for the regular server.
wollman [Mon, 27 Dec 2010 23:46:47 +0000 (23:46 +0000)]
Merge three revisions from head:
r214583 | wollman | 2010-10-30 22:36:05 -0400 (Sat, 30 Oct 2010) | 6 lines
Changed paths:
M /head/usr.bin/locate/locate/locate.rc
M /head/usr.bin/locate/locate/updatedb.sh
Make it possible to exclude directories by name no matter where they
are in the filesystem from the locate database. By default, exclude
".zfs" directories, as users who who have set snapdir=visible and are
taking frequent snapshots most likely do not want the snapshots
included in the locate database.
------------------------------------------------------------------------
r214613 | wollman | 2010-10-31 21:51:47 -0400 (Sun, 31 Oct 2010) | 7 lines
Changed paths:
M /head/usr.bin/locate/locate/updatedb.sh
jilles@ pointed out that using ${PRUNEDIRS:=".zfs"} in updatedb.sh
made it impossible to override PRUNEDIRS to make it empty. Use the
non-colon form to only set PRUNEDIRS if it is completely unset. (For
parallelism, the other configuration defaults here could be done the
same way, but that could be more obviously accomplished by disabling
updatedb in periodic.conf, so leave them alone for now.)
------------------------------------------------------------------------
r214615 | wollman | 2010-10-31 22:20:18 -0400 (Sun, 31 Oct 2010) | 6 lines
Changed paths:
M /head/usr.bin/locate/locate/updatedb.sh
Style cleanup: make this look more like a 21st-century shell script
and not something out of the early 1980s. Make sure all error
messages go to stderr, not stdout. Since there's error-handling code
to handle empty SEARCHPATHS and FILESYSTEMS, use the initialization
form that allows this error to be diagnosed. (hat tip: jilles@)
attilio [Mon, 27 Dec 2010 12:52:35 +0000 (12:52 +0000)]
MFC r215868, 215918, 216266, 216298:
- Advertise when the reboot came from a watchdog-induced reset
- Fix a bug where TCO_BOOT_STS was supposed to be cleared after
TCO_SECOND_TO_STS
- Use macros for max and min value capping when re-arming the
watchdog timeout
attilio [Mon, 27 Dec 2010 12:39:24 +0000 (12:39 +0000)]
MFC r215679:
Add the ability for GDB to printout the thread name along with other thread
specific informations.
In order to achieve that, for both on-line debugging and core analysis,
a new member to PT_LWPINFO ptrace(2) interface is added and a new
ELF note (NT_THRMISC) as well.
nwhitehorn [Wed, 22 Dec 2010 14:46:38 +0000 (14:46 +0000)]
MFC r216469:
Fix the overflowing livefs ISO by removing man pages from the HFS part of
the hybrid disk. This is a stopgap until a better solution can be found,
but lets the powerpc release build complete for the time being.
bschmidt [Tue, 21 Dec 2010 09:16:42 +0000 (09:16 +0000)]
Add 2 missing bus_dmamap_sync() calls. Those fix random 'scan timeout',
'could not set power mode', 'device config failed' and other errors due
reading invalid memory.
bschmidt [Tue, 21 Dec 2010 09:14:59 +0000 (09:14 +0000)]
Fix association on 5GHz channels. The device is initially configured using
a 2GHz channel with appropriate flags set to sc->config. Due to not zeroing
sc->config for auth/assoc those flags are still set while trying to connect
on a 5GHz channel.
* Make blkfront not advertise a larger maximum I/O size than it can handle
for unaligned data (r216241)
* Correctly reserve CPU #0's DPCPU pages (r216041)
* Make machdep.independent_wallclock do what it claims (r216382)
* Don't round xen timecounter to the nearest tick (r215663), but decrease
its frequency to avoid wrapping at ~4.3s (r216385)
* Remove debugging code which caused a massing slowdown in fork-heavy
workloads (r215813)
* Add a missing page table flush before invalidating TLBs in pmap_qremove
(r215819+215844)
* In pmap_release, don't unpin pages which weren't pinned (r215525) and don't
KASSERT page mappings which don't exist (r215470); but do pmap_qremove all
the relevant pages (r215472)
* Don't unmask an event channel until after we register the interrupt handler
for it (r216280)
jhb [Mon, 20 Dec 2010 17:08:22 +0000 (17:08 +0000)]
MFC 216504:
Add back a bounds check on valid idle priorities that was lost in an
earlier commit. While here, move the thread lock down in rtp_to_pri().
It is not needed for all of the priority value checks and the computation
of newpri.
joerg [Sun, 19 Dec 2010 21:33:28 +0000 (21:33 +0000)]
Fix __retval vs. retval confusion: retval is meant to store the (userland)
pointer where data is to be returned by ibask() (currently unimplemented),
while __retval holds the value returned by the libgpib ibfoo() functions.
The confusion resulted in the ibfoo() functions returning an uninitialized
value except in situations where the GPIB activity has been terminated
abnormally.
Implement more of __ibsta: END and SRQI status bits (taken out of the
uPD7210 IRQ status).
dougb [Sun, 19 Dec 2010 20:10:48 +0000 (20:10 +0000)]
MFC r215824:
Add a sync to the shutdown step. In the common case this will be
harmless at worst. On a heavily loaded server it will give the fs a
chance to do its business without the axe hanging over its head.
mlaier [Sun, 19 Dec 2010 06:07:35 +0000 (06:07 +0000)]
MFC r216335:
Fix a long standing (from the original 4.4BSD lite sources) race between
vmspace_fork and vm_map_wire that would lead to "vm_fault_copy_wired: page
missing" panics. While faulting in pages for a map entry that is being
wired down, mark the containing map as busy. In vmspace_fork wait until
the map is unbusy, before we try to copy the entries.
brucec [Thu, 16 Dec 2010 14:57:06 +0000 (14:57 +0000)]
MFC r216407:
USB probing often takes a long time and finishes finding devices after init
has started. In the case of sysinstall, this means that it has already built
its list of devices before probing finishes. Add a hint for users who have
booted from a USB stick only to find that sysinstall can't find it.
jfv [Wed, 15 Dec 2010 22:59:50 +0000 (22:59 +0000)]
MFC r216173
Remove the test for a minimum frame size from the IPV6 TX context
descriptor setup, when using VLANs and HW TAGGING the length of
an ICMP6 frame will fail this test and be discarded.
kib [Wed, 15 Dec 2010 15:25:56 +0000 (15:25 +0000)]
MFC r216255:
Update some comments related to use of amd64 full context switch.
In exec_linux_setregs(), use locally cached pointer to pcb to set
pcb_full_iret.
In set_regs(), note that full return is needed when code that sets
segment registers is enabled.
kib [Wed, 15 Dec 2010 15:15:42 +0000 (15:15 +0000)]
MFC r216394:
In fpudna()/npxdna(), mark FPU context initialized and optionally
mark user FPU context initialized, if current context is user context.
It was reversed in r215865, by inadequate change of this code fragment
to a call to fpuuserinited()/npxuserinited().
jfv [Tue, 14 Dec 2010 19:59:39 +0000 (19:59 +0000)]
MFC r216172, r216176:
Correct the RX discard and refresh_mbuf logic to match igb, the old
discard code could cause panics due to a bad pointer, now simply
have discard always free mbufs and depend on refresh. In the refresh
code, make sure the mbuf and soft buf struct are properly reset.
mm [Tue, 14 Dec 2010 15:36:47 +0000 (15:36 +0000)]
MFC r208683, r210999, r212385:
MFC r208683 (pjd):
Fix a bug where resilver is not started automatically on pool import or load.
If disk was missing on pool load or import and on next pool load or import
it was present, resilver wasn't started automatically and ZFS reported all
disks as ONLINE and healthy. Then, when another disk died, pool became
unaccessible, because if it was 2-way mirror or RAIDZ1 two vdevs were
out of sync.
To fix the problem, start resilver automatically on pool load or import.
Obtained from: OpenSolaris
MFC r210999 (pjd):
In FreeBSD we use 'jailed' property.
MFC r212385 (pjd):
On FreeBSD we can log from pool that have multiple top-level vdevs or log
vdevs, so don't deny adding new vdevs if bootfs property is set.
tijl [Tue, 14 Dec 2010 15:33:48 +0000 (15:33 +0000)]
MFC r216351:
Add a .note.ABI-tag section to ia64 startup files by linking crtbrand.c
in crt1.o. On other architectures crtbrand.c is included from crt1.c,
but that's not a C source code file on ia64. Instead it is compiled
separately and included in crt1.o using incremental linking.
rmacklem [Tue, 14 Dec 2010 13:45:57 +0000 (13:45 +0000)]
MFC: r216330
Disable attempts to establish a callback connection from the
experimental NFSv4 server to a NFSv4 client when delegations are not
being issued, even if the client advertises a callback path.
This avoids a problem where a Linux client advertises a
callback path that doesn't work, due to a firewall, and then
times out an Open attempt before the FreeBSD server gives up
its callback connection attempt. (Suggested by
drb at karlov.mff.cuni.cz.) The server should probably have
a 1sec timeout on callback connection attempts when there are
no delegations issued to the client, but that patch will require
changes to the krpc and this serves as a work around until then.
Tested by: drb at karlov.mff.cuni.cz
Approved by: re (kib)
bschmidt [Mon, 13 Dec 2010 17:56:31 +0000 (17:56 +0000)]
MFC r216237:
Fixes for monitor mode:
- Do not call iwn_calib_reset() for monitor mode. We do not want to query
information and do runtime calibration while in monitor mode. Poking the
firmware with adjustments for calibration results in firmware asserts.
This could happened on RUN -> RUN transition only.
- Adjust blink rate for monitor mode. It's supposed to not freak out and
turn off after a while.
- While here, remove one useless assignment of calib.state, it gets
overwritten later in the function.
bschmidt [Mon, 13 Dec 2010 17:53:41 +0000 (17:53 +0000)]
MFC r216238:
Fix scanning after loosing a connection. The firmware assumes that as long
as an association ID is set any scan is supposed to be a background scan.
This implies that the firmware will switch back to the associated channel
after a certain threshold, though, we are not notified about that. We
currently catch this case by a timer which will reset the firmware after
a 'scan timeout', though, upper layers are not notified about that and
will simply hang until manual intervention. Fix this by resetting the
firmware's knowledge about any association on RUN -> ASSOC and
!INIT -> SCAN transitions.
rwatson [Mon, 13 Dec 2010 12:34:35 +0000 (12:34 +0000)]
Merge r216365 from head to stable/8:
Derive the XENHVM kernel from GENERIC, adding only the options required
to support PV drivers (such as xenpci), and non-adptive locking (along
with a comment about why).
This change eliminates the synchronisation problem between GENERIC and
XENHVM, which had become severely rotted in HEAD, and in 8-STABLE
included non-production kernel debugging features such as WITNESS.
However, it comes at the cost of enabling devices and options that may
not be present under Xen (such as random ethernet cards). For now, opt
for a simpler kernel configuration file rather than using nooptions/
nodevice to enumerate and eliminate them. This leads to a somewhat
larger XENHVM kernel.
This is an MFC candidate for 8-STABLE before 8.2, in order to provide
a production-worthy XENHVM kernel configuration for amd64.
bschmidt [Sun, 12 Dec 2010 10:27:11 +0000 (10:27 +0000)]
MFC r216195:
For 6000 series and newer devices the DC calibration results are no
longer requested of the boot firmware. Instead of sending those results
to the runtime firmware the firmware is told to do the DC calibration
itself.
mm [Sat, 11 Dec 2010 23:48:10 +0000 (23:48 +0000)]
MFC r216291, r216293:
MFC r216291:
Do not print OpenSolaris hint to use (non-existing) installgrub(1) command
if creating a mirror by attaching a new vdev to a root pool.
MFC r216293:
Print message with information about updating the boot code if a new
vdev is attached to a root pool (e.g. when creating a mirrored boot pool).
Reported by: James R. Van Artsdalen (on freebsd-fs@freebsd.org)
Reviewed by: pjd
Approved by: re (kib), delphij (mentor)
jfv [Fri, 10 Dec 2010 22:59:09 +0000 (22:59 +0000)]
Remove bogus logic in the TX path, when using
VLANs and HW_TAGGING in IPv6 the tag is not yet
in the frame, and thus an ICMP6 packet fails this
condition and does not get sent.
bz [Fri, 10 Dec 2010 14:06:50 +0000 (14:06 +0000)]
MFC r216192:
Use correct field to track statistics counting error as bad header length.
This assimilates the code to what ip_input has been doing since r1.1 in
this case.
kib [Fri, 10 Dec 2010 10:48:54 +0000 (10:48 +0000)]
MFC r216150, r216158:
If unix socket has a unix socket attached as the rights that has a
unix socket attached as the rights that has a unix socket attached as
the rights ... Kernel may overflow the stack on attempt to close such
socket.
Only close the rights file in the context of the current close if the
file is not unix domain socket. Otherwise, postpone the work to
taskqueue, preventing unlimited recursion.
ae [Fri, 10 Dec 2010 05:18:37 +0000 (05:18 +0000)]
MFC r213254 by luigi:
fix breakage in in-kernel NAT: the code did not honor
net.inet.ip.fw.one_pass and always moved to the next rule
in case of a successful nat.
This should fix several related PR (waiting for feedback
before closing them)
brucec [Thu, 9 Dec 2010 15:24:59 +0000 (15:24 +0000)]
MFC r216243:
Ignore any failures with the "local" distribution since it's not present
on release CDs and so will normally fail.
installCommit() returns a DITEM_ value, not a Boolean.
distExtractAll() returns a Boolean, not a DITEM_ value.
Affects resolver operators who are validating with DNSSEC, and
querying zones which are in a key rollover period. The bug will
cause answers to incorrectly be marked as insecure.
trasz [Tue, 7 Dec 2010 22:00:48 +0000 (22:00 +0000)]
MFC r216084:
Don't panic when we read an empty ACL from ZFS. Apparently this may happen
with filesystems created under MacOS X ZFS port. This is kind of filesystem
corruption (we don't allow for setting empty ACLs), so make acl_get_file(3)
and related syscalls fail with EINVAL in that case. In theory, we could
return empty ACL to userland, but I'm afraid this would break some code.
yongari [Tue, 7 Dec 2010 19:14:18 +0000 (19:14 +0000)]
MFC r216111:
If RX lockup workaround is enabled, fxp(4) will periodically reset
the controller to workaround silicon bug of i82557. Each reset will
re-establish link which in turn triggers MII status change
callback. The callback will try to reconfigure controller if the
controller is not i82557 to enable flow-control. This caused
endless link UP/DOWN when the workaround was enabled on non-i82557
controller.
To fix the issue, apply RX lockup workaround only for i82557.
Previously it blindly checked undocumented EEPROM location such
that it sometimes enabled the workaround for other controllers. At
this time, only i82557 is known to have the silicon bug.
This fixes a regression introduced in r215906 which enabled flow
control support for all controllers except i82557.
Reported by: Karl Denninger (karl <> denninger dot net)
Tested by: Karl Denninger (karl <> denninger dot net)
Approved by: re (kensmith)
emax [Mon, 6 Dec 2010 22:45:29 +0000 (22:45 +0000)]
MFC r215195
Add firmware downloader for Atheros AR3011 based USB Bluetooth devices.
Hardware donated by: Rusty Nejdl rnejdl at ringofsaturn dot com
Tested by: Rusty Nejdl rnejdl at ringofsaturn dot com
Tested by: Andrzej Tobola ato at iem dot pw dot edu dot pl
Approved by: re
kib [Fri, 3 Dec 2010 22:07:07 +0000 (22:07 +0000)]
MFC r209463:
Fix bugs on pc98, use npxgetuserregs() instead of npxgetregs() for
get_fpcontext(), and npxsetuserregs() for set_fpcontext). Also,
note that usercontext is not initialized anymore in fpstate_drop().
Systematically replace references to npxgetregs() and npxsetregs()
by npxgetuserregs() and npxsetuserregs() in comments.
MFC r215865:
Remove npxgetregs(), npxsetregs(), fpugetregs() and fpusetregs()
functions, they are unused. Remove 'user' from npxgetuserregs()
etc. names.
For {npx,fpu}{get,set}regs(), always use pcb->pcb_user_save for FPU
context storage.
MFC r216012:
Calling fill_fpregs() for curthread is legitimate, and ELF coredump
does this.
jhb [Thu, 2 Dec 2010 15:58:54 +0000 (15:58 +0000)]
MFC 215820:
Add device IDs for two more ServerWorks Host-PCI bridges so that we can
read their starting PCI bus number for older systems that do not support
ACPI (or have a broken _BBN method).
Plug well observed races on la_hold entries with the callout handler.
Call the handler function with the lock held, return unlocked as we
might free the entry. Rework functions later in the call graph to be
either called with the lock held or, only if needed, unlocked.
Place asserts to document and tighten assumptions on various lle locking,
which were not always true before.
We call nd6_ns_output() unlocked and the assignment of ip6->ip6_src was
decentralized to minimize possible complexity introduced with the formerly
missing locking there. This also resulted in a push down of local
variable scopes into smaller blocks.
Reported by: many
Submitted by: Dmitrij Tejblum (tejblum yandex-team.ru) (original version)
Tested by: remko
PR: kern/148857
Approved by: re (kib)
brucec [Thu, 2 Dec 2010 09:09:46 +0000 (09:09 +0000)]
MFC r216052:
Update the serial port device names. They changed in 8.0 because the
default driver is now uart(4).
PR: bin/140887
Submitted by: Joe Barbish <fbsd1 at a1poweruser.com>
MFC r216053:
If no floppy drive is installed kldBrowser() can generate an error
early on. Initialize menu and count so the cleanup code doesn't try
and use their uninitialized values.
PR: bin/152270
Submitted by: Remi LAURENT <cloud at madpowah.org>