Sepherosa Ziehau [Sun, 17 Aug 2008 03:44:48 +0000 (03:44 +0000)]
Various tap functions of bpf(4) are the only non-MPSAFE code on ethernet
input path (in polling or interrupt threads), so push mplock holding down
into bpf(4) tap functions. Also re-check the bpf_if after holding mplock
to avoid use-after-check race.
Thomas Nikolajsen [Sat, 16 Aug 2008 21:42:19 +0000 (21:42 +0000)]
Add missing `)'.
Hasso Tepper [Sat, 16 Aug 2008 17:48:16 +0000 (17:48 +0000)]
Fix some NULL pointer dereferences, most of the in debug code though.
Found-by: LLVM/Clang Static Analyzer
Sepherosa Ziehau [Sat, 16 Aug 2008 13:10:59 +0000 (13:10 +0000)]
- bpfpoll() is a static function
- minor white space change
Sepherosa Ziehau [Sat, 16 Aug 2008 09:05:59 +0000 (09:05 +0000)]
ipfw(4) parallelize stage 1, step 2/2: per-CPU static rule lists
See the comment at the beginning of net/ipfw/ip_fw2.c for detailed description.
Nicolas Thery [Sat, 16 Aug 2008 07:31:11 +0000 (07:31 +0000)]
Remove useless NULL check after kmalloc(M_WAITOK).
Nicolas Thery [Fri, 15 Aug 2008 21:39:04 +0000 (21:39 +0000)]
Allocate unpcb structs with kmalloc() instead of zalloc().
Nicolas Thery [Fri, 15 Aug 2008 21:37:16 +0000 (21:37 +0000)]
Allocate sackblock structs with kmalloc() instead of zalloc().
Nicolas Thery [Fri, 15 Aug 2008 17:37:29 +0000 (17:37 +0000)]
Allocate socket structs with kmalloc() instead of zalloc.
Hasso Tepper [Thu, 14 Aug 2008 20:55:54 +0000 (20:55 +0000)]
Remove some useless variables and assignments from USB code.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Thu, 14 Aug 2008 07:41:52 +0000 (07:41 +0000)]
Use "ipl" as module name and not the full version string. This makes
/etc/rc.d/ipfilter behave correctly when checking if ipfilter is loaded
or compiled into the kernel.
Reported-by: Frank Josellis <frank@dynamical-systems.org>
Sascha Wildner [Wed, 13 Aug 2008 11:02:31 +0000 (11:02 +0000)]
Remove a useless assignment and two unused variables.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Wed, 13 Aug 2008 10:30:20 +0000 (10:30 +0000)]
Remove unused variable.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Wed, 13 Aug 2008 10:29:38 +0000 (10:29 +0000)]
Move declaration and assignment of minr into #if 0.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Wed, 13 Aug 2008 08:18:09 +0000 (08:18 +0000)]
Remove useless variable/assignments and add a missing 'break'.
Found-by: LLVM/Clang Static Analyzer
Matthew Dillon [Wed, 13 Aug 2008 00:55:55 +0000 (00:55 +0000)]
Don't bump intr_context when running from the softint. Hopefully this
will allow aborts queued from the softint to proceed instead of panic.
Matthias Schmidt [Tue, 12 Aug 2008 09:28:22 +0000 (09:28 +0000)]
Update the units(1) program with the latest changes from FreeBSD:
units is a nice tools which converts quantities expressed in various scales to
their equivalents in other scales.
Update the units library file and the man page.
Obtained-from: FreeBSD
YONETANI Tomokazu [Tue, 12 Aug 2008 03:35:35 +0000 (03:35 +0000)]
Humanized number can be up to three digits + unit letter + terminating NUL.
Thomas Nikolajsen [Mon, 11 Aug 2008 19:58:10 +0000 (19:58 +0000)]
Update hammer.8:
- Add note that prune and reblock are per-PFS
- Move note that reblock is needed for recovering pruned space
up to prune command
- Fix typo: s/^Nm/.Nm/
- Add mdoc comment for each command, for better readability of hammer.8
- Improve mark-up a bit
Sascha Wildner [Mon, 11 Aug 2008 18:01:17 +0000 (18:01 +0000)]
Remove two unused variables and improve readability slightly.
Found-by: LLVM/Clang Static Analyzer
Joerg Sonnenberger [Mon, 11 Aug 2008 00:05:06 +0000 (00:05 +0000)]
Make comment more readable by putting the copyright on a separate line.
Joerg Sonnenberger [Mon, 11 Aug 2008 00:04:12 +0000 (00:04 +0000)]
_PATH_MKDIR is unused, nuke it.
Joerg Sonnenberger [Mon, 11 Aug 2008 00:01:18 +0000 (00:01 +0000)]
Just remove the README file, noone bothers with it anyway.
Joerg Sonnenberger [Sun, 10 Aug 2008 23:50:12 +0000 (23:50 +0000)]
Remove bootstrap code -- you should really have stdint.h by now.
Include stdint.h to get SIZE_MAX as ISO C99 sayss that's the right
header.
Joerg Sonnenberger [Sun, 10 Aug 2008 23:39:56 +0000 (23:39 +0000)]
Fix one inversed condition.
Joerg Sonnenberger [Sun, 10 Aug 2008 23:35:40 +0000 (23:35 +0000)]
Check, complain about and accumulate errors when writing reject files
or final output. This can happen for example if the filesystem is full
and silent truncation of output files is the worst way to handle this.
Joerg Sonnenberger [Sun, 10 Aug 2008 23:01:51 +0000 (23:01 +0000)]
Don't try to guess if the hunk was already applied if it doesn't have
context. This fails at least for the special case of adding the first
line of a file with no context and when fuzz is suppressed.
Discussed with otto@openbsd.org, who didn't have a better idea.
Matthew Dillon [Sun, 10 Aug 2008 22:09:52 +0000 (22:09 +0000)]
Remove daddr_t dependancies in the swap code. Move swblk_t and add
u_swblk_t. This causes the swap code to properly use 32 bit block numbers
across all architectures (which gives us swap in the terrabyte range).
Hasso Tepper [Sun, 10 Aug 2008 21:57:45 +0000 (21:57 +0000)]
Fix interrupt pipe processing to treat a ugensa(4) interrupt message
as CDC notify.
Obtained-from: OpenBSD
Hasso Tepper [Sun, 10 Aug 2008 21:29:17 +0000 (21:29 +0000)]
Use IPv6 documentation prefix (RFC3849) instead of 6bone prefixes in
documentation and examples.
Hasso Tepper [Sun, 10 Aug 2008 20:05:54 +0000 (20:05 +0000)]
Cleanup err/error mess in the uticom_download_fw().
Found-by: LLVM/Clang Static Analyzer
Matthew Dillon [Sun, 10 Aug 2008 20:03:15 +0000 (20:03 +0000)]
Implement a bounce buffer for physio if the buffer passed from userland
is not at least 16-byte aligned.
Reported-by: "Steve O'Hara-Smith" <steve@sohara.org>, and others
Sascha Wildner [Sun, 10 Aug 2008 19:47:31 +0000 (19:47 +0000)]
Remove useless assignment.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 10 Aug 2008 19:45:01 +0000 (19:45 +0000)]
Remove unused variable.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 10 Aug 2008 18:57:03 +0000 (18:57 +0000)]
Remove unused variable.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 10 Aug 2008 17:19:38 +0000 (17:19 +0000)]
Remove useless assignment.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sun, 10 Aug 2008 17:03:29 +0000 (17:03 +0000)]
Remove some useless code I forgot to remove in r1.24.
Found-by: LLVM/Clang Static Analyzer
Sascha Wildner [Sat, 9 Aug 2008 21:55:59 +0000 (21:55 +0000)]
Add sradixsort(3) MLINK.
Sascha Wildner [Sat, 9 Aug 2008 20:28:12 +0000 (20:28 +0000)]
Add MLINKS for mpool(3) functions.
Sascha Wildner [Sat, 9 Aug 2008 20:20:03 +0000 (20:20 +0000)]
style change: don't use an MLINK as the source for an MLINK.
Sascha Wildner [Sat, 9 Aug 2008 20:12:20 +0000 (20:12 +0000)]
Add MLINK for strnvis(3).
Sascha Wildner [Sat, 9 Aug 2008 20:08:20 +0000 (20:08 +0000)]
Add missing MLINKS.
Sascha Wildner [Sat, 9 Aug 2008 19:20:32 +0000 (19:20 +0000)]
Add MLINK for kvm_readstr().
Sascha Wildner [Sat, 9 Aug 2008 18:33:39 +0000 (18:33 +0000)]
* Add some missing MLINKS
* Move tls(2) and umtx(2) MLINKS out of NO_P1003_1B test
* Sort MLINKS alphabetically
Sepherosa Ziehau [Sat, 9 Aug 2008 09:41:54 +0000 (09:41 +0000)]
- Group together the declaration of static rule related global variables
- Add comment
Sepherosa Ziehau [Sat, 9 Aug 2008 07:08:20 +0000 (07:08 +0000)]
Though following code sequence is safe currently (even w/o BGL):
if (ipfw_dyn_v != NULL) {
lockmgr(&dyn_lock, LK_...);
/* accessing ipfw_dyn_v */
lockmgr(&dyn_lock, LK_RELEASE)
}
it will be better for us to guard against future code changes by using:
if (ipfw_dyn_v != NULL) {
lockmgr(&dyn_lock, LK_...);
if (ipfw_dyn_v != NULL) {
/* accessing ipfw_dyn_v */
}
lockmgr(&dyn_lock, LK_RELEASE)
}
Matthew Dillon [Sat, 9 Aug 2008 07:04:16 +0000 (07:04 +0000)]
HAMMER 2.0:02 - rmdir, stability
* Rmdir now removes only directories
* Fix a memory record assertion. The overlap checking code was
improperly shortcutting the search when it encountered a
deleted in-memory record.
* Wait until after any multi-flush-group operations are
complete on an inode before processing reflush requests.
Sepherosa Ziehau [Sat, 9 Aug 2008 06:29:45 +0000 (06:29 +0000)]
Don't allow set 1 or 0 to dyn_buckets
Sepherosa Ziehau [Sat, 9 Aug 2008 06:09:18 +0000 (06:09 +0000)]
ipfw(4) parallelize stage 1, step 1/2: lock dynamic rule table
- Looking up dynamic rule is protected by shared lockmgr lock, add comment in
the dynamic rule description comment section. Following related changes are
made:
o In lookup_dyn_rule(), don't try to delete expired states or move the
state to the head of hash bucket.
o Expired states will be reaped in ipfw_tick(). Exclusive lockmgr lock is
held when iterating dynamic rules in ipfw_tick().
- Installing and deleting dynamic rules are protected by exclusive lockmgr lock.
- Add lookup_rule(), which returns static rule ptr saved in dynamic rule. This
function is added mainly because accessing dynamic rule outside of lockmgr
lock is unsafe.
- Add static ruleset generation, so that we could check whether static ruleset
was changed or not after blocking operation (e.g. try to hold lockmgr lock)
during static ruleset iteration. If static ruleset was changed, the static
rulset iteration would be terminated and the packet being checked would be
denied/dropped without further static rule accessing (e.g. stats updating).
- Add sysctl functions to make sure that user supplied values are in sane state.
Hasso Tepper [Fri, 8 Aug 2008 18:33:11 +0000 (18:33 +0000)]
Detach correctly so there is no need to panic during reattach.
Sascha Wildner [Thu, 7 Aug 2008 11:15:45 +0000 (11:15 +0000)]
Silence two warnings by casting to time_t *.
Sascha Wildner [Thu, 7 Aug 2008 10:45:58 +0000 (10:45 +0000)]
WARNS is 6 for usr.bin/.
Sascha Wildner [Thu, 7 Aug 2008 09:59:49 +0000 (09:59 +0000)]
Fix 'Used' column in -h/-H output by using int64_t.
Matthew Dillon [Wed, 6 Aug 2008 15:38:58 +0000 (15:38 +0000)]
HAMMER 2.1:01 - Stability
* Fix a bug in the B-Tree code. Recursive deletions are done prior to
marking a node as actually being empty, but setup for the deletion
(by calling hammer_cursor_deleted_element()) must still occur prior
to the recursrion so cursor indexes are properly adjusted for the
possible removal. If the recursion is not successful we can just leave
the cursors post-adjusted since the subtree has an empty leaf anyway.
* Rename HAMMER_CURSOR_DELBTREE to HAMMER_CURSOR_RETEST so its function
is more apparent.
* Properly set the HAMMER_CURSOR_RETEST flag when relocking a cursor
that has tracked a ripout, so the cursor's new current element is
re-tested by any iteration using the cursor.
* Remove code that allowed a SETUP record to be converted to a FLUSH
record if the target inode is already in the correct flush group.
The problem is that target inode has already setup its sync state
for the backend and the nlinks count will not be correct if we
add another directory ADD/DEL record to the flush. While strictly
a temporary nlinks mismatch (the next flush would correct it), a
crash occuring here would result in inconsistent nlink counts on
the media.
* Reference and release buffers instead of directly calling low level
hammer_io_deallocate(), and generally reference and release buffers
around reclamations in the buffer/io invalidation code to avoid
races. In particular, the buffer must be referenced during a
call to hammer_io_clear_modify().
* Fix a buffer leak in hammer_del_buffers() which is not only bad unto
itself, but can also cause reblocking assertions on the presence of
buffer aliases later on.
* Return ENOTDIR if rmdir attempts to remove a non-directory.
Reported-by: Francois Tigeot <ftigeot@wolfpond.org> (rmdir)
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx> (multiple)
Nuno Antunes [Tue, 5 Aug 2008 15:11:32 +0000 (15:11 +0000)]
* Don't call ifp->if_output() from inside mpls_output(). Make the
caller responsible for sending the packet.
* Fix mpls gateway arp resoving.
* Introduce a new mbuf flag M_MPLSLABELED indicating that the packet
has at least one valid mpls label on it.
* Use the new mbuf flag instead of forging a sockaddr_mpls to let
ether_output() identify the mpls packets.
* Drop the packet when mpls ttl is exceeded (doesn't send an ICMP message yet).
* Fix compilation warning.
* Improve comments.
Sepherosa Ziehau [Tue, 5 Aug 2008 11:57:40 +0000 (11:57 +0000)]
- Use sysctl_int_range() for autoinc_step
- Assert instead snaphot of autoinc_step is within range, instead of adjust it.
Sepherosa Ziehau [Tue, 5 Aug 2008 11:23:01 +0000 (11:23 +0000)]
- In dc_intr(), check IFF_RUNNING instead of IFF_UP; this closes a possible
time window between IFF_UP is set but not IFF_RUNNING.
- In dc_ioctl(), don't program multicast filter, if NIC is not running yet.
Add assertion in Xircom's multicast filter programming function to make
sure that NIC is running.
- Don't set IFF_RUNNING in Xircom's multicast filter programming function.
- Move setting IFF_RUNNING before programming multicast filter; just to keep
the IFF_RUNNING assertion work. Add comment about it
Dragonfly-bug: <http://bugs.dragonflybsd.org/issue1106>
Tested-by: Tim <t-df@timdarby.net>
Sepherosa Ziehau [Tue, 5 Aug 2008 11:08:30 +0000 (11:08 +0000)]
- Add serializer assertion in all NIC driver's interfaces
- Nuke bfe_miibus_statchg(), which serves no purpose
Sascha Wildner [Mon, 4 Aug 2008 19:42:39 +0000 (19:42 +0000)]
Remove reference to expand_number(3). We'll bring in dehumanize_number(3)
at some point and it will be documented together with humanize_number(3).
Sascha Wildner [Mon, 4 Aug 2008 19:22:44 +0000 (19:22 +0000)]
Use libutil's humanize_number(3) for -h.
Submitted-by: Samuel J. Greear <sjg@evilcode.net>
Taken-from: FreeBSD
Sascha Wildner [Mon, 4 Aug 2008 19:09:26 +0000 (19:09 +0000)]
Sync humanize_number(3) with FreeBSD.
As the code is coming from NetBSD, change the license to their
two clause flavor.
Submitted-by: Samuel J. Greear <sjg@evilcode.net>
Matthew Dillon [Mon, 4 Aug 2008 18:15:47 +0000 (18:15 +0000)]
Keep UFS compatible on 32 and 64 bit builds by changing the 'time_t' embedded
in its media structure to ufs_time_t.
Sepherosa Ziehau [Sun, 3 Aug 2008 11:00:32 +0000 (11:00 +0000)]
Promote sysctl_int_range()
Sepherosa Ziehau [Sun, 3 Aug 2008 06:19:20 +0000 (06:19 +0000)]
Add serializer assertion in all NIC driver interfaces.
Sepherosa Ziehau [Sun, 3 Aug 2008 03:26:22 +0000 (03:26 +0000)]
White space
Matthew Dillon [Sun, 3 Aug 2008 03:00:21 +0000 (03:00 +0000)]
Fix a panic on boot that can occur if you hit keys on the keyboard
before the console device's high level initialization is run.
Reported-by: "Alexander Polakov" <polachok@gmail.com>,
"David Rhodus" <sdrhodus@gmail.com>
Sascha Wildner [Sun, 3 Aug 2008 01:01:51 +0000 (01:01 +0000)]
Actually install the blacklists of compromised SSH keys into /etc when doing
'make upgrade'.
Sascha Wildner [Sat, 2 Aug 2008 23:02:26 +0000 (23:02 +0000)]
Forced commit to clarify the previous commit message:
humanize_number() is in libutil, not libtool.
Sascha Wildner [Sat, 2 Aug 2008 22:56:52 +0000 (22:56 +0000)]
Use humanize_number() from libtool instead of rolling our own version for
-h and -H.
As a side effect, this fixes an issue with showing a negative value in
the 'Avail' column (for UFS file systems which are using the MINFREE
reserve) by casting f_bavail to signed when passing it to prthumanval(),
like it was done before already for fstoblk().
f_bavail used to be signed in struct fsstat but is now unsigned in struct
vfsstat (in accordance with SUS).
Taken-from: FreeBSD
Matthew Dillon [Sat, 2 Aug 2008 21:21:28 +0000 (21:21 +0000)]
HAMMER: fsync blocking fixes
* Fix another case where fsync() can block indefinitely.
Reported-by: Michael Neumann, Kyle Butt, Gergo Szakal
Simon Schubert [Sat, 2 Aug 2008 15:30:28 +0000 (15:30 +0000)]
We're really DragonFly, so bastardize the FreeBSD file.
Simon Schubert [Sat, 2 Aug 2008 15:29:53 +0000 (15:29 +0000)]
Make vector selection easier to maintain.
Sepherosa Ziehau [Sat, 2 Aug 2008 11:39:00 +0000 (11:39 +0000)]
Introduce dynamic rule hash array generation, so that after possible blocking
packet sending we could know that the dynamic rule hash array was changed and
reiterate. This is *necessary* even if BGL is still used.
Sepherosa Ziehau [Sat, 2 Aug 2008 07:05:48 +0000 (07:05 +0000)]
- Use NULL
- White space
Sepherosa Ziehau [Sat, 2 Aug 2008 06:35:20 +0000 (06:35 +0000)]
- Make dynamic rule allocation non-blocking
- Make dynamic rule hash array allocaion non-blocking
Old behaviour of the hash array allocation is changed in following aspects:
o Old hash array is freed only if new hash array allocation succeed
o Old hash array is reused, if the allocation makes the hash array size
less than the old one
After this change, the static rules iteration is non-blocking, so we will not
have trouble to duplicate static rules (using netmsg forwarding) on all CPUs.
# send_reject() called in the rule iteration may block, but it is the last step
# in the rule iteration, so we don't need to worry about it.
Matthew Dillon [Sat, 2 Aug 2008 05:22:21 +0000 (05:22 +0000)]
Add amd64 files for the ISA and PCI busses and adjust the header files
to operate in more of a machine-independant fashion.
Sepherosa Ziehau [Sat, 2 Aug 2008 03:32:38 +0000 (03:32 +0000)]
- Add macro for cpu_portfn(0), on which all ipfw configuration should happen
- Add assertion macro to make sure a msgport is IPFW_CFGPORT
Sepherosa Ziehau [Sat, 2 Aug 2008 03:03:06 +0000 (03:03 +0000)]
- ipfw_add_rule will never fail
- Make sure that ipfw_add_rule happens on CPU0
- Save a snapshot of autoinc_step, so sysctl will not interfering rule number
assignment
- Add comment
Matthew Dillon [Sat, 2 Aug 2008 01:14:43 +0000 (01:14 +0000)]
Create an #include layer for bus/pci and bus/isa so source files do not
have to dive into bus/xxx/i386 to access header files.
Matthew Dillon [Fri, 1 Aug 2008 23:11:16 +0000 (23:11 +0000)]
AMD64 work:
* Sync elf64.h w/ Jordan's work + FreeBSD to get proper elf hash types
* Use proper elf types for symbol lookups
Matthew Dillon [Fri, 1 Aug 2008 04:42:30 +0000 (04:42 +0000)]
Cast to unsigned long to match the rest of the expression. This is just
a clean-up.
Reported-by: "Robin Carey" <robin.carey1@googlemail.com>
Matthew Dillon [Thu, 31 Jul 2008 22:30:33 +0000 (22:30 +0000)]
HAMMER: Mirroring work
* Fix an invalidation race that can be triggered by the mirroring or
reblocking code. The invalidation was being made before the direct IO
completed rather then after.
* Fix an invalidation race. hammer_io_inval() was cleaning out any
pre-existing buffer cache buffer aliases but was not cleaning out the
VM backing store, resulting in CRC assertions (but no on-media corruption)
by the mirroring code.
* Change the bulk-record sequencing to avoid adding the record to
the inode's record list until after the direct-io has been initiated.
* Change the mirror_read code to generate PASS records for deleted records
whos create_tid is out of bounds, so we do not have to transport the
data for deleted data records. This greatly reduces the mirror bandwidth
needed to mirror deletions.
The mirror_write code similarly will issue delete_tid updates as
appropriate when presented with a PASS record.
* Mirror targets no longer strip deleted records which had yet to be created
on the target. The record is now created so snapshot state is retained.
Sascha Wildner [Thu, 31 Jul 2008 20:23:40 +0000 (20:23 +0000)]
Fix 'unused variable' warning in case neither BOOTP nor NFS_ROOT are
defined.
Sascha Wildner [Thu, 31 Jul 2008 20:05:47 +0000 (20:05 +0000)]
Sync zoneinfo database with tzdata2008e from elsie.
africa: 8.13 -> 8.15
asia: 8.21 -> 8.22
europe: 8.14 -> 8.17
leapseconds: 8.5 -> 8.6
From Arthur David Olson's comments:
* Changes for Mauritius in the "africa" file based on messages from
Steffen Thorsen and Alex Krivenyshev: Mauritius will start and end
their DST a few days earlier than previously announced
(new start date: 2008-10-26, new end date: 2009-03-31).
* A fix for a typo in the "europe" file from Jesper Norgaard Welen (only
affects 1945 time stamps).
* Changes to the "leapseconds" file to reflect the IERS announcement
of a positive leap second at the end of 2008.
* Data file URL fixes from Halasz Sandor Viktor.
Sepherosa Ziehau [Thu, 31 Jul 2008 14:39:36 +0000 (14:39 +0000)]
Assert that static rules' count is only updated on CPU0
Sepherosa Ziehau [Thu, 31 Jul 2008 12:42:40 +0000 (12:42 +0000)]
White space and style changes
Sepherosa Ziehau [Thu, 31 Jul 2008 12:35:15 +0000 (12:35 +0000)]
White space and style changes
Sepherosa Ziehau [Thu, 31 Jul 2008 12:09:00 +0000 (12:09 +0000)]
- Undefine temporary macro
- White space changes
- Use "do {} while (0)" in macro
Sepherosa Ziehau [Thu, 31 Jul 2008 11:58:42 +0000 (11:58 +0000)]
White space and style changes
Sepherosa Ziehau [Thu, 31 Jul 2008 11:46:51 +0000 (11:46 +0000)]
White space and style changes
Sepherosa Ziehau [Thu, 31 Jul 2008 11:36:38 +0000 (11:36 +0000)]
Remove unused macro; undefine temporary macro
Matthew Dillon [Thu, 31 Jul 2008 06:21:19 +0000 (06:21 +0000)]
HAMMER Utilities: Cleanup
* Fix a conditional that generated an extranious call to usage()
Matthew Dillon [Thu, 31 Jul 2008 06:01:32 +0000 (06:01 +0000)]
HAMMER Utilities: Streaming mirroring!
* Add a new streaming mirroring feature called 'mirror-stream' which works
like mirror-copy but does not exit unless the pipe is broken. A simple
script to sleep and re-run the command (to deal with the occassional
broken tcp connection) is all that is needed.
* Add new options -b <bw> and -i <delay> to support bandwidth-limiting
mirroring streams. The bandwidth may be specified in bytes/sec or suffixed
with 'k', 'm', or 'g' to specify kilobytes, megabytes, or gigabytes per
second.
Matthew Dillon [Thu, 31 Jul 2008 04:42:04 +0000 (04:42 +0000)]
HAMMER: Mirroring, misc bug fixes
* Adjust hammer_flusher_async() to queue an extra flush if called twice
in quick succession. This fixes the 'sync' command to properly sync
the entire filesytem. Previously two syncs were needed.
* Fix a bug where a user application could get stuck due to HAMMER
losing track of an inode flush.
* Mirroring masters now use the most recent fully committed transaction
id instead of the last flushed (but still subject to rollback) tid.
This fixes an issue where a mirror could pass information still subject
to crash recovery rollback to the slave. Now only fully committed
information is passed to the slave.
* Fix a transitory bug where the mirroring code would sometimes not
sync the correct delete state to the slave. The slave would always
be corrected in the next pass, however. Now the slave is correct
at all times.
* Fix a bug in hammer_mirror_write() where a delete-to operation could
livelock.
* Add a new HAMMER ioctl which waits for the committed data transaction
id to change. This will be used by the mirroring code to implement
continuous streaming operation.
Reported-by: Francois Tigeot <ftigeot@wolfpond.org>,
Michael Neumann <mneumann@crater.dragonflybsd.org>
(the user application freeze bug)
Sepherosa Ziehau [Wed, 30 Jul 2008 15:33:08 +0000 (15:33 +0000)]
Minor white space and style changes
Sepherosa Ziehau [Wed, 30 Jul 2008 12:57:59 +0000 (12:57 +0000)]
Minor white space and style changes
Sepherosa Ziehau [Wed, 30 Jul 2008 12:31:51 +0000 (12:31 +0000)]
Minor white space and style changes
Simon Schubert [Wed, 30 Jul 2008 01:48:14 +0000 (01:48 +0000)]
Unbreak world.
Matthew Dillon [Wed, 30 Jul 2008 01:16:29 +0000 (01:16 +0000)]
Add a quick entry for the new 'gpt boot' directive.
Matthew Dillon [Wed, 30 Jul 2008 00:45:26 +0000 (00:45 +0000)]
Add a terrible hack to GPT which allows non-EFI BIOSes to boot from it.
With a freshly made gpt on a disk you can run 'gpt boot da0' (specifying
the correct whole-disk name) and GPT will do the following:
* It will create a 100MB partition #0 in the GPT
* It will fake up a slice 1 in the PMBR for the BIOS and the loader that
aliases partition #0 in the GPT.
The BIOS and loader will see a bootable slice 1 while the kernel, once
booted, will see a GPT. This can cause confusion because the kernel
will NOT see the fake slice 1 any more, and the partition number in the
GPT of the boot partition 0 (aka da0s0).
The boot partition (da0s0 from the point of view of the kernel) needs
to have a 32 bit disklabel and a UFS filesystem in da0s0a which contains
the kernel image and boot sub-directory. In the boot sub-directory the
loader.conf file must contain a line that points to the root mount, which
say you may have created with gpt add as partition #1.
Older kernels may require the root mount to also be in a disklabel, so you
might have to put a 32 or 64 bit disklabel in partition #1 as well.
This requirement will be removed soon relative to this commit (since the
idea with GPT is to not have to use disklabels).
vfs.root.mountfrom="ufs:ad0s1a"
vfs.root.mountfrom="ufs:ad0s1"