Matthew Dillon [Fri, 6 Apr 2012 05:04:08 +0000 (22:04 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Sepherosa Ziehau [Fri, 6 Apr 2012 04:57:17 +0000 (12:57 +0800)]
netstat: Reduce SACK scoreboard statistics description verbosity
Matthew Dillon [Fri, 6 Apr 2012 01:16:51 +0000 (18:16 -0700)]
hammer2 - helper thread skeleton listener
* Helper thread skeleton, listen & accept connections (just echo for now).
Matthew Dillon [Thu, 5 Apr 2012 22:50:22 +0000 (15:50 -0700)]
hammer2 - Start adding ioctl infrastructure, start writing hammer2 utility
* Begin working on the ioctl infrastructure for HAMMER2. Start with
basic version retrieval and the ability to persistently store
connection configuration in the volume header.
* Start writing the hammer2 utility, beginning with connection configuration
commands (connect, disconnect, status).
Matthew Dillon [Thu, 5 Apr 2012 22:48:34 +0000 (15:48 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Sascha Wildner [Thu, 5 Apr 2012 19:48:35 +0000 (21:48 +0200)]
dsched.9: A little mdoc correction.
Sascha Wildner [Thu, 5 Apr 2012 17:10:51 +0000 (19:10 +0200)]
kernel/ufs: Fix compilation without INVARIANTS.
Sascha Wildner [Thu, 5 Apr 2012 09:08:06 +0000 (11:08 +0200)]
ppp(8): Raise WARNS to 2 and fix the warnings.
Sascha Wildner [Wed, 4 Apr 2012 21:31:43 +0000 (23:31 +0200)]
kernel: Pass a real format string to functions which expect one.
This is safer than just passing a random string.
A few of these changes might be overly cautious but it doesn't
hurt to stick with using formats where they are expected more
or less generally.
Sascha Wildner [Wed, 4 Apr 2012 19:01:46 +0000 (21:01 +0200)]
bktr(4): Let kthread_create() construct the thread name.
Sascha Wildner [Wed, 4 Apr 2012 18:09:14 +0000 (20:09 +0200)]
kernel/acpi: Remove the redefinition of kthread_create().
It's a relict from an old pile of #ifdefs that defined various
incarnations of kthread_create()s for various FreeBSD versions.
The #ifdefs have since been removed and this #define is what
used to be the __DragonFly__ case.
There are only 3 places where kthread_create() is used in ACPI,
so remove it because it's just confusing.
While here, fix a non-constant format string in one of the
kthread_create()s.
Sepherosa Ziehau [Wed, 4 Apr 2012 13:11:36 +0000 (21:11 +0800)]
carp: Lockless MPSAFE step 6 of many
Run the carp information retrieving code in netisr0
Sepherosa Ziehau [Wed, 4 Apr 2012 12:41:06 +0000 (20:41 +0800)]
carp: Lockless MPSAFE step 5 of many
Dispatch SIOCSVH to netisr0 for further processing
Sepherosa Ziehau [Wed, 4 Apr 2012 12:07:22 +0000 (20:07 +0800)]
carp: Lockless MPSAFE step 4 of many
Dispatch "stop" method from if_ioctl to netisr0 for further processing
Sepherosa Ziehau [Wed, 4 Apr 2012 10:59:57 +0000 (18:59 +0800)]
carp: Lockless MPSAFE step 3 of many
Dispatch main part of if_init to netisr0 for further processing
Sepherosa Ziehau [Wed, 4 Apr 2012 09:52:18 +0000 (17:52 +0800)]
carp: Lockless MPSAFE step 2 of many
Dispatch major part of clone_destroy to netisr0 for further processing
Sepherosa Ziehau [Wed, 4 Apr 2012 09:26:36 +0000 (17:26 +0800)]
carp: Lockless MPSAFE step 1 of many
Dispatch ifnet_detach_event to netisr0 for further processing
Sepherosa Ziehau [Tue, 3 Apr 2012 13:19:48 +0000 (21:19 +0800)]
pf/carp: Our carp is never layed out in the fashion used by pf
Comment out the invalid usage temporarily
Sepherosa Ziehau [Tue, 3 Apr 2012 13:11:55 +0000 (21:11 +0800)]
carp: Remove unused code
Sepherosa Ziehau [Tue, 3 Apr 2012 12:57:15 +0000 (20:57 +0800)]
carp: Make sure that carp_ifaddr only happens in netisr0
Venkatesh Srinivas [Tue, 3 Apr 2012 03:59:20 +0000 (20:59 -0700)]
kernel -- vnlru: Remove MPLOCK from vnlru.
vnlru didn't need the mplock through its main loop.
Matthew Dillon [Mon, 2 Apr 2012 21:25:53 +0000 (14:25 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
François Tigeot [Mon, 2 Apr 2012 17:21:17 +0000 (19:21 +0200)]
vkernel: cap vdisk max. io size to MAXPHYS
Matthew Dillon [Mon, 2 Apr 2012 17:17:47 +0000 (10:17 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Matthew Dillon [Mon, 2 Apr 2012 17:16:21 +0000 (10:16 -0700)]
kernel - Add max I/O size cap to vmaxiosize()
* Cap the returned value at MAXPHYS, allowing VCHR devices to set a
higher max-IO limit (according to DMA limitations) without blowing
out the pbuf's that the frontend uses to build clustered I/O.
Matthew Dillon [Mon, 2 Apr 2012 17:12:16 +0000 (10:12 -0700)]
kernel - Reduce impact of write_behind on small/temporary files
* Do not start issuing write-behind writes until a file has grown past
a certain size, otherwise we wind up issuing excessive I/O for
small files and for temporary files which might be quickly deleted.
* Add vfs.write_behind_minfilesize sysctl (defaults to 10MB).
Matthew Dillon [Mon, 2 Apr 2012 17:10:33 +0000 (10:10 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Venkatesh Srinivas [Mon, 2 Apr 2012 17:02:25 +0000 (10:02 -0700)]
kernel -- FFS: Take softdep lock in softdep_disk_io_initiation.
softdep_disk_io_initiation was using the mplock rather than the softdep
lock to protect the softdep work queue and items on it. Take the softdep
lock and allow it to be taken recursively, so that io_start bioops can
call into other parts of softdep. Prevents softdep completion callback
from racing softdep_disk_io_initiation, remaining panics of 2291.
Eventually the MPLOCK in the bio_ops callback can go away, but that will
require more testing.
Closes-bug: 2291
Sascha Wildner [Mon, 2 Apr 2012 08:21:42 +0000 (10:21 +0200)]
Sync zoneinfo database with tzdata2012c from munnari.oz.au
africa: 8.33 -> 8.35
asia: 8.70 -> 8.73
northamerica: 8.53 -> 8.54
* africa: Morocco 2012 DST from last Sunday in April through last
Sunday in September.
* asia: Change start of DST in Syria to last Friday in March in
2012 and (as a guess) forward. Starts and (guessed) ends of
DST in West Bank and Gaza for 2012. Also add a missing HTML
directive at the top of the file.
* northamerica: Start and end of DST in Haiti in 2012 according
to US rules.
François Tigeot [Mon, 2 Apr 2012 06:34:35 +0000 (08:34 +0200)]
Kernel: Set max io size limit for all disk devices
* Prior to this change, slice and partition devices did not inherit their
parent maximum IO size limit
* IO transactions on these devices could thus never be bigger than the
old 64KB DFLTPHYS defaul kernel limit
Sascha Wildner [Sun, 1 Apr 2012 10:10:08 +0000 (12:10 +0200)]
fsstress: Adjust the sample script a bit.
Matthew Dillon [Sun, 1 Apr 2012 02:03:22 +0000 (19:03 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Matthew Dillon [Sun, 1 Apr 2012 01:35:33 +0000 (18:35 -0700)]
HAMMER VFS - Fix assertion with multi-volume setup
* The RB compare code for hammer_io was extracting the volume number
from the wrong place, creating a situation where duplicate hammer_io's
would sometimes be inserted in the RB tree (causing an assertion + panic).
* Pull the volume number from a different field.
Reported-by: Mark Saad <nonesuch@longcount.org>
Matthew Dillon [Sun, 1 Apr 2012 01:33:59 +0000 (18:33 -0700)]
kernel - Do not use M_USE_INTERRUPT_RESERVE for M_NOWAIT
* Redefine M_NOWAIT to not use M_USE_INTERRUPT_RESERVE. This can result
in mbuf exhaustion during bursts of mbuf allocations and cause kernel
kvm expansion to assert and panic.
Reported-by: sephe
Matthew Dillon [Sun, 1 Apr 2012 01:30:13 +0000 (18:30 -0700)]
kernel - Fix signal masking race assertion panic w/vkernel
* sigsuspend() and pselect() record the old signal mask in order to
allow an interrupting signal to run its handler before the old mask
is restored.
* When multiple threads are present a race can ensue where another thread
changes the signal handler after sigsuspend() or pselect() have interrupted,
but before they are able to process the signal.
* If the signal is no longer enabled the old signal mask is not restored
on system call return, resulting in an assertion and panic.
* Fix the problem by checking the flag and restoring the old signal mask
on return (rather than asserting when the flag is found to be non-zero
on return).
Reported-by: Venkatesh Srinivas
Sascha Wildner [Sat, 31 Mar 2012 22:22:46 +0000 (00:22 +0200)]
libm: Fix a typo in the MLINKS.
Sascha Wildner [Sat, 31 Mar 2012 18:34:05 +0000 (20:34 +0200)]
Fix some indentation in various places.
François Tigeot [Sat, 31 Mar 2012 18:23:56 +0000 (20:23 +0200)]
Kernel - Restore the 64KB max. IO size limit
* Some drivers and part of the kernel are dependent on an implicit
64KB maximum IO size limit
* Explicitely set it to 64KB (or MAXPHYS if it is smaller) for devices
which do not report a default value
* This should fix ATA DMA errors reported in issue #2342
Sascha Wildner [Sat, 31 Mar 2012 14:48:23 +0000 (16:48 +0200)]
aic(4): Remove ISA attachment.
The only support that remains (and works) is for AHA-1460 PC Card adapters.
While here, reduce differences with FreeBSD a bit.
François Tigeot [Fri, 30 Mar 2012 21:09:51 +0000 (23:09 +0200)]
VFS accounting: avoid VOP_GETATTR() calls
* Only use them if VFS accounting is not disabled
Sascha Wildner [Sat, 31 Mar 2012 03:24:38 +0000 (05:24 +0200)]
asr(4): Improve readability of an 'if' a bit.
Sascha Wildner [Sat, 31 Mar 2012 03:19:25 +0000 (05:19 +0200)]
mfi(4): Fix indent.
Sascha Wildner [Sat, 31 Mar 2012 02:44:50 +0000 (04:44 +0200)]
rp(4): Fix indent.
Sascha Wildner [Sat, 31 Mar 2012 02:10:59 +0000 (04:10 +0200)]
pcn(4): Add missing braces.
Sascha Wildner [Sat, 31 Mar 2012 01:46:53 +0000 (03:46 +0200)]
lgue(4): Add missing braces and fix indentation.
It was returning too early in some cases.
While here, add an error message.
Sascha Wildner [Sat, 31 Mar 2012 01:30:32 +0000 (03:30 +0200)]
kernel/netgraph7: Fix whitespace.
Sascha Wildner [Sat, 31 Mar 2012 01:30:07 +0000 (03:30 +0200)]
kernel: Indent a debugging kprintf.
Sascha Wildner [Sat, 31 Mar 2012 01:26:52 +0000 (03:26 +0200)]
hptiop(4): Add missing braces.
Sascha Wildner [Sat, 31 Mar 2012 01:20:34 +0000 (03:20 +0200)]
kernel: Adjust some casts.
Matthew Dillon [Fri, 30 Mar 2012 22:51:07 +0000 (15:51 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
François Tigeot [Thu, 22 Mar 2012 18:17:48 +0000 (19:17 +0100)]
Kernel - Completely remove DFLTPHYS
* There is no need to have two different macros define the maximum
allowed IO size for low-level operations; replace DFLTPHYS by
MAXPHYS in the entire kernel.
* Old drivers typically used DFLTPHYS without a second thought,
assuming it would always be the same value; they may have hard
limitations and break if bigger I/O sizes are suddenly used.
Be sure to explicitely limit their maximum allowed I/O size to
64KB and keep them working.
John Marino [Fri, 30 Mar 2012 18:07:35 +0000 (20:07 +0200)]
rtld: allocate obj->vertab only once
Verbatim from FreeBSD SVN 233546 (27 MAR 2012)
Prevent rtld_verify_object_versions() from being called several times for
the same object. This can happen when object is a dependency of the
dlopen()ed dso. When called several times, we waste time due to unneeded
processing, and memory, because obj->vertab is allocated anew on each
iteration.
Francois Tigeot [Fri, 30 Mar 2012 08:52:07 +0000 (10:52 +0200)]
VFS accounting: do not count write operations for removed files
* vnode operations can and do happen out-of-order in some circumstances
(multi-job builds with make for example)
* check if the vnode has at least one associated link to be sure it
still corresponds to an existing file
* do not count the write operation if this is not the case
Sascha Wildner [Fri, 30 Mar 2012 16:38:54 +0000 (18:38 +0200)]
mfiutil(8): Fix some 'unused variable' warnings and raise WARNS to 6.
Sascha Wildner [Fri, 30 Mar 2012 16:36:50 +0000 (18:36 +0200)]
rwhod(8): Prevent clobbering the neighboring field by a wrong cast.
The time stamps in the rwhod(8) network datagram and, based on that,
/var/rwho/whod.* spool files are typed as 32bit int and cannot accept
a 64bit time_t.
The old code clobbered the first bytes of the adjacent "hostname"
field, yielding empty hostnames in local rwho(1) and ruptime(1) output.
(Outgoing datagrams to other hosts were not affected.)
Re-code to let the compiler do the proper coercion (well, until 2038).
Submitted-by: Martin Neitzel
Dragonfly-bug: <https://bugs.dragonflybsd.org/issues/2339>
Francois Tigeot [Wed, 28 Mar 2012 11:52:36 +0000 (13:52 +0200)]
VFS accounting: small speed optimization
* Some operations may end up using the accounting macro with an
effective zero bytes space usage difference
* Avoid calling the whole mess and its associated mount-point spinlock
in that case.
Venkatesh Srinivas [Fri, 30 Mar 2012 06:33:08 +0000 (23:33 -0700)]
kernel -- ffs: Do not dereference NULL inodes in ffs_sync_scan1.
ffs_sync_scan1 is a fast callback from vmntvnodescan; it is not called
with vnodes locked. It is possible for an ffs_reclaim to have reclaimed
the vnode in question, NULL-ing out ip, without having removed the vnode
from the per-mount list. If we see a NULL inode, return failure from the
fast callback.
Samuel J. Greear [Fri, 30 Mar 2012 03:27:09 +0000 (21:27 -0600)]
kern.cp_time - Add convenience defines
* Add convenience defines for indexes of the array returned by the kern.cp_time
sysctl.
* This sync's us with FreeBSD and should un-break and couple of pkgsrc
packages.
Sascha Wildner [Thu, 29 Mar 2012 18:05:12 +0000 (20:05 +0200)]
mfi(4): Update to LSI's version 4.23 of the driver.
Brings in support for newer SAS2208 (aka Thunderbolt) based
controllers. It was tested with an Intel RS25DB080.
A few other things have been fixed too. Most x86_64/i386 specific
parts have been merged, MSI is now setup in mfi_pci.c properly.
Taken-from: FreeBSD (from their projects/ repository)
Sascha Wildner [Thu, 29 Mar 2012 14:13:56 +0000 (16:13 +0200)]
puffs_framebuf.3: Fix typo
Sascha Wildner [Thu, 29 Mar 2012 13:25:12 +0000 (15:25 +0200)]
puffs_ops.3: Fix typo.
Matthew Dillon [Thu, 29 Mar 2012 05:36:09 +0000 (22:36 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Venkatesh Srinivas [Wed, 28 Mar 2012 18:09:15 +0000 (11:09 -0700)]
kernel -- ffs: Replace softupdates critical section locks with lockmgr.
ffs softupdates was using a combination of critical sections and the mplock
to construct its acquire_lock/free_lock/interlocked_sleep primitives.
The softupdates I/O completion callback had a few points where it could block,
causing it to lose the mplock and any critical sections it held. When it did
so, front-end softupdates code would try to grab the lock but panic on seeing
the I/O completion callback in progress. This was not a problem in older
systems, as splx() would prevent the I/O callback from starting while
softdep code was executing.
This patch converts to using hard locks (lockmgr), which are held even while
a thread is blocked.
getdirtybuf(), locking a dirty buffer via BUF_LOCK, was changed to not
deadlock against the I/O completion path; specifically it drops the softdep
lock when its non-blocking attempt to lock a dirty buffer fails. One caller
of getdirtybuf() also required changes to retry locking buffers.
Closes-bug: 2291
Partially-from: FreeBSD r140709
Reported-by: tuxillo, marino, Rumko, vsrinivas
Discussed-with: dillon
Francois Tigeot [Wed, 28 Mar 2012 11:22:56 +0000 (13:22 +0200)]
VFS accounting: use vq_vptomp() in kern_ftruncate()
* Getting the needed struct mp* from curthread is not a good idea,
the chain of dependencies is complex and may cause problems.
* Use vq_vptomp() to get it from the vnode we're using instead.
Sepherosa Ziehau [Wed, 28 Mar 2012 03:23:36 +0000 (11:23 +0800)]
netstat: Print SACK related statistics
While I'm here, indent syncookie statistics into syncache statistics block.
Sepherosa Ziehau [Tue, 27 Mar 2012 01:54:55 +0000 (09:54 +0800)]
tcp/sack: Add more statistics
Matthew Dillon [Wed, 28 Mar 2012 02:11:22 +0000 (19:11 -0700)]
kernel - Revert
0d52e78c527ec7ba3ac62d40d9fa588c964d4c55
* Revert allowance of spinlocks when doing a lockmgr LK_RELEASE operation.
Spinlocks must not be allowed for release operations due to the possibility
of a livelock in the IPI code if wakeup() is called.
Matthew Dillon [Wed, 28 Mar 2012 02:10:14 +0000 (19:10 -0700)]
kernel - Fix improper BUF_UNLOCK() with spinlock held
* Fix improper BUF_UNLOCK()s in the buf daemon threads. Use a
marker and rearrange the code to release the spinlock before
executing BUF_UNLOCK().
Matthew Dillon [Tue, 27 Mar 2012 20:41:14 +0000 (13:41 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Venkatesh Srinivas [Tue, 27 Mar 2012 14:55:17 +0000 (07:55 -0700)]
kernel -- DEBUG_LOCKS: Do not panic if releasing a lockmgr lock w/ spinlocks held.
Francois Tigeot [Mon, 26 Mar 2012 17:58:30 +0000 (19:58 +0200)]
mountlist_exists(): use a TAILQ_FOREACH macro again
Removing a few lines of code in the process.
Venkatesh Srinivas [Mon, 26 Mar 2012 15:59:02 +0000 (08:59 -0700)]
kernel: msdosfs -- Use -1 rather than 32-bit 0xffffffff in mount().
Corrects bug mounting 8GB msdosfs filesystem on x86-64.
Submitted-by: G. Isenmann
Sepherosa Ziehau [Mon, 26 Mar 2012 05:39:10 +0000 (13:39 +0800)]
tcp: Properly update tcps_rttcantdetect
- Fix the logic which detects that RTT based spurious retransmition
detection does not work.
- Add missing tcps_rttcantdetect updating in header prediction code
Sepherosa Ziehau [Mon, 26 Mar 2012 05:37:46 +0000 (13:37 +0800)]
netstat: Print the statistics that Eifel works but RTT based spurious rexmt not
Sepherosa Ziehau [Mon, 26 Mar 2012 03:36:53 +0000 (11:36 +0800)]
tcp/sack: Prevent invalid SACK option from being processed
If the received SACK blocks contain one invalid SACK block,
discard the whole SACK blocks.
Sascha Wildner [Sun, 25 Mar 2012 12:34:03 +0000 (14:34 +0200)]
acpi_hp(4): Fix acquisition of acpi's softc.
Now that acpi_hp is acpi_wmi's child, the softc must be taken from
its grandparent (acpi).
This fixes a crash in the setup of the sysctl tree.
Reported-by: tuxillo
John Marino [Sun, 25 Mar 2012 10:49:17 +0000 (12:49 +0200)]
rtld: Sync memory allocation with FreeBSD
Taken from:
FreeBSD SVN 233306 (22 March 2012)
FreeBSD SVN 233307 (22 March 2012)
FreeBSD SVN 233357 (22 March 2012)
Remove unused CalTech #ifdef fragments.
Use xmalloc() instead of malloc() in the places where malloc() calls
are assumed to not fail. Make the xcalloc() calling conventions follow
the calloc(3) calling conventions and replace unchecked calls to calloc()
with calls to xcalloc(). Remove redundand declarations from xmalloc.c,
which are already present in rtld.h.
Implement xstrdup() using strlen()/xmalloc()/memcpy() already presented
in rtld, instead of pulling in libc strdup().
John Marino [Sun, 25 Mar 2012 10:28:13 +0000 (12:28 +0200)]
rtld: Fix ELF filter implementation
Vertatim from FreeBSD SVN 233231 (20 March 2012):
Do not relocate twice an object which happens to be needed by loaded
binary (or dso) and some filtee opened due to symbol resolution when
relocating need objects. Record the state of the relocation
processing in Obj_Entry and short-circuit relocate_objects() if
current object already processed.
Do not call constructors for filtees loaded during the early
relocation processing before image is initialized enough to run
user-provided code. Filtees are loaded using dlopen_object(), which
normally performs relocation and initialization. If filtee is
lazy-loaded during the relocation of dso needed by the main object,
dlopen_object() runs too earlier, when most runtime services are not
yet ready.
Postpone the constructors call to the time when main binary and
depended libraries constructors are run, passing the new flag
RTLD_LO_EARLY to dlopen_object(). Symbol lookups callers inform
symlook_* functions about early stage of initialization with
SYMLOOK_EARLY. Pass flags through all functions participating in
object relocation.
Use the opportunity and fix flags argument to find_symdef() in
arch-specific reloc.c to use proper name SYMLOOK_IN_PLT instead of
true, which happen to have the same numeric value.
Francois Tigeot [Sun, 25 Mar 2012 10:38:51 +0000 (12:38 +0200)]
VFS accounting: use an explicit TAILQ_FIRST/TAILQ_NEXT loop in mountlist_exists()
The previous TAILQ_FOREACH loop body was never executed
Francois Tigeot [Sun, 25 Mar 2012 08:27:07 +0000 (10:27 +0200)]
VFS accounting: do not set vp->v_pfsmp for non-nullfs mounts
* the test in _cache_setvp() was wrong and was initializing a pfs-specific
accounting variable in vnodes for all filesystem types, possibly causing
unnecessary work for each filesystem write operation.
John Marino [Sat, 24 Mar 2012 08:55:38 +0000 (09:55 +0100)]
defaults: remove /usr/lib/gcc* from ldconfig search path
It is not necessary for ldconfig to add /usr/lib/gcc44 and /usr/lib/gcc41
directories to the default library search path. Every binary built with
gcc41 and gcc44 embeds these paths into the DT_RPATH dynamic tag which
tells the runtime linker to look their first. In effect, this means these
paths are potentially searched multiple times: once due to the rpath and
again due to the ldconfig hints file. Let's do away will the redundant,
always-fails check here.
Another reason is that the gcc libraries have different versions of the
same libraries. Surely the gcc41 version isn't preferred over the gcc44
version, but it gets searched first. Again, let rpath take care of this
for gcc.
To update the rc.conf defaults, "make upgrade" after building world is
required.
John Marino [Sat, 24 Mar 2012 08:14:15 +0000 (09:14 +0100)]
gcc41: remove /usr/lib from rpath
The gcc41 specs were unconditionally adding /usr/lib to the rpath, making
it impossible to use the -z nodefaultlibs linker flag. RTLD will look in
/usr/lib by default as the last priority of the library search path as
long as the object wasn't built with -z nodefaultlibs.
Also the __DragonFly__ macro was bumped from 1 to 3. It's supposed to
reflect the major version of DragonFly.
John Marino [Sat, 24 Mar 2012 08:08:48 +0000 (09:08 +0100)]
gcc44: remove /usr/lib from rpath
The gcc44 specs were unconditionally adding /usr/lib to the rpath, making
it impossible to use the -z nodefaultlibs linker flag. RTLD will look in
/usr/lib by default as the last priority of the library search path as
long as the object wasn't built with -z nodefaultlibs.
John Marino [Sat, 24 Mar 2012 05:40:50 +0000 (06:40 +0100)]
rtld: Implement DT_RUNPATH and -z nodefaultlib
DT_RUNPATH is incorrectly being considered as an alias of DT_RPATH. The
purpose of DT_RUNPATH is to have two different types of rpath: one that
can be overridden by the environment variable LD_LIBRARY_PATH and one that
can't. With the currently implementation, LD_LIBRARY_PATH will always
trump any embedded rpath or runpath tags.
Current path search order by rtld:
==================================
LD_LIBRARY_PATH
DT_RPATH / DT_RUNPATH (always the same)
ldconfig hints file (default: /var/run/ld-elf.so.hints)
/usr/lib
New path search order by rtld:
==============================
DT_RPATH of the calling object if no DT_RUNPATH
DT_RPATH of the main binary if no DT_RUNPATH and binary isn't calling obj
LD_LIBRARY_PATH
DT_RUNPATH
ldconfig hints file
/usr/lib
The new path search matches how the linux runtime loader works. The other
major added feature is support for linker flag "-z nodefaultlib". When
this flag is passed to the linker, rtld will skip all references to the
standard library search path ("/usr/lib" in this case but it could handle
more color delimited paths) except in DT_RPATH and DT_RUNPATH.
New path search order by rtld with -z nodefaultlib flag set:
============================================================
DT_RPATH of the calling object if no DT_RUNPATH
DT_RPATH of the main binary if no DT_RUNPATH and binary isn't calling obj
LD_LIBRARY_PATH
DT_RUNPATH
ldconfig hints file (skips all references to /usr/lib)
Currently gcc41 and gcc44 are embedding /usr/lib directly in every
DT_RPATH tag of every binary and shared library it creates. This is
both unnecessary due to rtld default search path order and it also
defaults the purpose of -z nodefaultlib, so this behavior must be
changed before the flag works. This will be done in a separate commit.
John Marino [Tue, 20 Mar 2012 18:40:41 +0000 (19:40 +0100)]
ELF: Update header, sync with binutils 2.22
Francois Tigeot [Sat, 24 Mar 2012 12:40:27 +0000 (13:40 +0100)]
VFS accounting: fix an issue with unlink operations
* Space counters were previously decreased for every unlink(2)
on regular files.
* They are only updated for the last link now
Francois Tigeot [Sat, 24 Mar 2012 13:43:47 +0000 (14:43 +0100)]
vquota(8): Only count files with more than 2 hard links once
True, false, what's the difference ?
Matthew Dillon [Sat, 24 Mar 2012 00:33:51 +0000 (17:33 -0700)]
libc - Do not allow a stuck syslogd to screw up the entire system
* If syslogd gets stuck the socket buffer will still full forever.
Only try writing a limited number of times before giving up.
Matthew Dillon [Fri, 23 Mar 2012 22:49:54 +0000 (15:49 -0700)]
kernel - Add workaround for errata #721 on AMD cpus (found by Matt Dillon)
* Official reference for errata 721:
http://support.amd.com/us/Processor_TechDocs/41322_10h_Rev_Gd.pdf
* This is the cpu bug found by Matthew Dillon, present on all K10 cores
(so far). AMD has indicated that the bug is not present on Bulldozer
cpus.
* The MSR workaround is now reported and programmed during kernel boot.
* No discernable difference in performance was detected running GCC
with and without the MSR adjustment.
* Verified to have fixed our test case w/GCC. It no longer seg-faults.
Sascha Wildner [Fri, 23 Mar 2012 21:06:37 +0000 (22:06 +0100)]
rpc.yppasswdd(8): Fix some warnings and raise WARNS to 5.
Matthew Dillon [Fri, 23 Mar 2012 20:40:36 +0000 (13:40 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Matthew Dillon [Fri, 23 Mar 2012 20:38:29 +0000 (13:38 -0700)]
kernel - Improve NFS server error responses when an inode goes away
* When an inode goes away and FHTOVP fails return ESTALE instead of
what the VFS returned.
* Greatly improves the re-acquisition of files on NFS clients which have
been ripped out by the server or other clients.
Matthew Dillon [Fri, 23 Mar 2012 20:36:27 +0000 (13:36 -0700)]
kernel - Fix improper unlock/relock sequence in HAMMER
* VOP_FSYNC() can be called during a vnode inactivation or reclaim.
In this case the vnode lock absolutely cannot be released or it
can create a window of opportunity for another thread that results
in a panic.
* Fixes a NFS server crash when multiple clients are trying to
delete/create/write the same file at the same time.
Matthew Dillon [Fri, 23 Mar 2012 16:07:48 +0000 (09:07 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Matthew Dillon [Fri, 23 Mar 2012 16:06:57 +0000 (09:06 -0700)]
kernel - Fix bug in SILI, remove debugging in AHCI
* Fix the same unlock/lock sequence bug in the SILI driver that was
fixed in the AHCI driver.
* Remove a flag that was being added to the service set in AHCI for
debugging purposes.
Matthew Dillon [Fri, 23 Mar 2012 08:52:00 +0000 (01:52 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Matthew Dillon [Fri, 23 Mar 2012 08:47:48 +0000 (01:47 -0700)]
kernel - Fix another AHCI bug
* Remove the unlock/lock sequences around the xpt_done() calls. These
temporary unlocks create a gap which can allow another interrupt to
squeeze in and interfere with the interrupt thread that is already
running, resulting in corruption.
This bug occurs under very heavy loads, and typically required multiple
concurrent ops to a SSD to trigger.
* Add additional assertions to catch issues and reorder one of the
chiploads.
* This is a bit non-optimal, be on the lookout for deadlocks in case it
turns out that holding the lock is a bad idea.
Matthew Dillon [Fri, 23 Mar 2012 08:40:00 +0000 (01:40 -0700)]
Merge branches 'hammer2' and 'master' of ssh://crater.dragonflybsd.org/repository/git/dragonfly into hammer2
Sepherosa Ziehau [Fri, 23 Mar 2012 06:48:26 +0000 (14:48 +0800)]
tcp/sack: Add comment about the implemented TCP/SACK related RFCs
Matthew Dillon [Fri, 23 Mar 2012 04:37:25 +0000 (21:37 -0700)]
kernel - Fix mount refs interactions and umount races
* It is possible for a umount to race other operations on active mount
point, causing one or the other to deadlock.
* vfs_busy()/vfs_unbusy() now incr/decr mp->mnt_refs.
* cache_findmount() now increments mp->mnt_refs, and add a new API
function cache_dropmount() which decrements it.