Sascha Wildner [Thu, 24 Jul 2008 03:26:46 +0000 (03:26 +0000)]
Fix LINT now that we build with -Werror-implicit-function-declaration.
Also fix some issues with too many arguments being passed to isa_dmastart()
and isa_dmadone().
Sascha Wildner [Thu, 24 Jul 2008 01:27:47 +0000 (01:27 +0000)]
Remove stopgap definition of TAILQ_FOREACH_SAFE.
Sascha Wildner [Thu, 24 Jul 2008 01:24:24 +0000 (01:24 +0000)]
Document TAILQ_FOREACH_SAFE.
Taken-from: FreeBSD
Sascha Wildner [Thu, 24 Jul 2008 00:17:29 +0000 (00:17 +0000)]
Sync with FreeBSD (adds DragonFly 2.0).
Matthew Dillon [Wed, 23 Jul 2008 17:22:33 +0000 (17:22 +0000)]
Synchronize some of the machine-independant AMD64 bits.
Obtained-from: Jordan Gordeev <jgordeev@dir.bg>
Matthew Dillon [Wed, 23 Jul 2008 16:39:34 +0000 (16:39 +0000)]
Synchronize some of the machine-independant AMD64 bits.
Obtained-from: Jordan Gordeev <jgordeev@dir.bg>
Sascha Wildner [Wed, 23 Jul 2008 14:14:44 +0000 (14:14 +0000)]
Uncomment reference.
Sascha Wildner [Wed, 23 Jul 2008 14:09:05 +0000 (14:09 +0000)]
Remove old comment.
Sascha Wildner [Tue, 22 Jul 2008 15:42:34 +0000 (15:42 +0000)]
Fix path for the package tools.
Reported-by: Archimedes Gaviola <archimedes.gaviola@gmail.com>
Sepherosa Ziehau [Tue, 22 Jul 2008 12:08:41 +0000 (12:08 +0000)]
Don't let PROMISC interfere hardware vlan tagging operation. Enable hardware
vlan tagging after this change.
Sepherosa Ziehau [Tue, 22 Jul 2008 11:55:01 +0000 (11:55 +0000)]
- Add bge_cksum_pad() to assist hardware csum offloading on runts
Obtained-from: NetBSD
- If bge_encap() fails, increase ifnet.if_oerrors
Sepherosa Ziehau [Tue, 22 Jul 2008 11:52:06 +0000 (11:52 +0000)]
Add serializer assertion in all NIC driver interfaces
Sepherosa Ziehau [Tue, 22 Jul 2008 11:49:22 +0000 (11:49 +0000)]
Increase RX ticks to 100us
Sepherosa Ziehau [Tue, 22 Jul 2008 11:37:14 +0000 (11:37 +0000)]
Add jmphy.c
Sepherosa Ziehau [Tue, 22 Jul 2008 11:28:49 +0000 (11:28 +0000)]
Add driver which supports PHYs from JMicron
Obtained-from: FreeBSD (yongari@freebsd.org)
Sepherosa Ziehau [Tue, 22 Jul 2008 11:16:28 +0000 (11:16 +0000)]
regen
Sepherosa Ziehau [Tue, 22 Jul 2008 11:16:11 +0000 (11:16 +0000)]
Add OUI for PHYs from JMircon
Sepherosa Ziehau [Tue, 22 Jul 2008 10:59:16 +0000 (10:59 +0000)]
- Remove the callout and related bits in mii_layer; all of the ethernet
device drivers actually do mii_tick() in their own callout and
mii_softc.mii_ticks serves the us quit well. This makes all mii aware
NIC drivers' miibus interface MP safe.
- Clear mii_softc.mii_ticks when change ifmedia.
- Clear mii_softc.mii_ticks if we have link.
Sascha Wildner [Tue, 22 Jul 2008 00:22:23 +0000 (00:22 +0000)]
Reference hammer(5).
Sascha Wildner [Mon, 21 Jul 2008 23:42:23 +0000 (23:42 +0000)]
Add missing section.
Sascha Wildner [Mon, 21 Jul 2008 23:42:02 +0000 (23:42 +0000)]
Fix typo.
Thomas Nikolajsen [Mon, 21 Jul 2008 21:20:52 +0000 (21:20 +0000)]
Add note on more HAMMER features:
- instant crash recovery
- large file systems & multi volume
Nuno Antunes [Sun, 20 Jul 2008 18:43:12 +0000 (18:43 +0000)]
Fix compilation warning.
Sascha Wildner [Sat, 19 Jul 2008 23:53:36 +0000 (23:53 +0000)]
Fix prototypes and correct some other mistakes.
Matthew Dillon [Sat, 19 Jul 2008 22:14:46 +0000 (22:14 +0000)]
Change 'default' to 'English'
Matthew Dillon [Sat, 19 Jul 2008 20:26:01 +0000 (20:26 +0000)]
HAMMER Utilities: Sync with HAMMER 65.
Matthew Dillon [Sat, 19 Jul 2008 18:48:15 +0000 (18:48 +0000)]
HAMMER Utilities: Sync with HAMMER 65.
* Simplified PFS directives.
* Bring the 'hammer blockmap' debugging dump up to date.
* hammer mirror-write no longer attempts to update the end-sync when it
does not receive an end-synchronization command from the originator.
Matthew Dillon [Sat, 19 Jul 2008 18:44:49 +0000 (18:44 +0000)]
HAMMER 65/Many: PFS cleanups and confusion removal
* Simplify master/slave operation. Remove the master=, slave, and no-mirror
options from pfs-update. Retain pfs-master, pfs-slave, pfs-upgrade, and
pfs-downgrade for dealing with master and slave operation.
Move the master= and nomirror specifications back to hammer_mount. They
have to be mount-wide anyhow, the current code does not support different
master ID's on a PFS-by-PFS basis.
* Add some additional failsafes to the mount code. The master id cannot
be allowed to change by a mount update (-u).
* Fix a bug in hammer pfs-upgrade operation that could result in a livelock
during the B-Tree iteration.
Sascha Wildner [Sat, 19 Jul 2008 13:50:51 +0000 (13:50 +0000)]
Fix last 'missing sentinel in function call' warning.
Sascha Wildner [Sat, 19 Jul 2008 13:43:03 +0000 (13:43 +0000)]
Remove trailing whitespace.
Matthias Schmidt [Sat, 19 Jul 2008 12:29:59 +0000 (12:29 +0000)]
Adjust the path for HEAD to 2.0 for now. Once we have packages for 2.1 available,
we can change it to 2.1
Matthew Dillon [Sat, 19 Jul 2008 04:49:39 +0000 (04:49 +0000)]
HAMMER 64/Many: NFS, cross-device links, synctid
* Check for cross-device links and cross-PFS links in the link and
rename code.
* Update a directory's mtime when a file is created or deleted within it.
(good idea anyway, also allows NFS clients to properly invalidate their
directory caches).
* Only lock the PFS sync-end-tid field when the HAMMER_PFSD_SLAVE flag is
not set.
* Clear ocp->dip->objid_cache when cleaning out the object cache.
* PFS softlinks in the form @@PFS%05d are auto-expanded by HAMMER's
readlink() to include a snapshot transaction id. Adjust getattr
to properly set va_size (aka stat->st_size) to the length of the
expanded version. This fixes NFS confusion and allows PFS's to be
mounted via their softlinks.
* Fix another issue where the synctid ioctl would still sometimes stall
until the next filesystem sync.
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
Matthew Dillon [Sat, 19 Jul 2008 04:43:33 +0000 (04:43 +0000)]
O_CREAT was being allowed to leak through a read-only NFS export.
Sascha Wildner [Fri, 18 Jul 2008 23:29:24 +0000 (23:29 +0000)]
Remove outdated hammer.txt.
Sascha Wildner [Fri, 18 Jul 2008 23:23:21 +0000 (23:23 +0000)]
Fix message.
Sascha Wildner [Fri, 18 Jul 2008 22:54:52 +0000 (22:54 +0000)]
* Add some lines about HAMMER mirroring which are based on a nice explanation
with examples sent to me by Michael Neumann <mneumann@ntecs.de>.
* Miscellaneous additions and fixes here and there.
Matthew Dillon [Fri, 18 Jul 2008 03:51:28 +0000 (03:51 +0000)]
Try to make fwohci work more reliably. Stop printing 'phy int' to the
console when it occurs. Mask the interrupts which are not supported so
they do not reoccur.
There is still a problem with PHY resets... the bus does not always get
scanned after a reset.
Matthew Dillon [Fri, 18 Jul 2008 03:49:13 +0000 (03:49 +0000)]
Detach the SIM when a firewire disk device is disconnected. Leave the
code that supported reconnection commented out.
Fix an API violation in some of the code using SLISTs.
Sascha Wildner [Fri, 18 Jul 2008 00:28:04 +0000 (00:28 +0000)]
Set count to a negative value for an initial burst.
Matthew Dillon [Fri, 18 Jul 2008 00:19:53 +0000 (00:19 +0000)]
HAMMER 63/Many: IO Error handling features
This commit removes all the remaining Debugger() calls and KKASSERTs in the
I/O error path. Errors are now propagated up the call tree and properly
reported.
* Report I/O errors instead of asserting.
* Read or Write errors in the flush path disable flushing and force the mount
into read-only mode. Modified buffers are left locked in memory until
umount to provide a consistent snapshot of the state of the filesystem.
You must umount and remount to recover the filesystem. The filesystem
will automatically rollback to the last valid flush upon remounting.
* umount and umount -f are now able to unmount a HAMMER filesystem that has
catastrophic write errors (e.g. pulling the USB cable on an external
drive).
Matthew Dillon [Fri, 18 Jul 2008 00:09:39 +0000 (00:09 +0000)]
When dealing with a failed read properly set B_INVAL.
Matthew Dillon [Fri, 18 Jul 2008 00:07:23 +0000 (00:07 +0000)]
Fix multiple bugs in CAM related devices which go away unexpectedly. This
fixes numerous panics when pulling a USB mass media device in the midst of
heavy I/O.
* The SIM lock was being unlocked via the periph->sim path after periph
was unheld. periph can become free and blow up the unlock, so get
the sim into a local variable first, then release periph.
* The code which waits for CCB completion needs to be a while loop, not
an if. It worked anyway, but wasn't very robust.
* Add CAM_SIM_DEREGISTERED to flag when a sim is undergoing deregistration.
* Beef up cam_dead_sim so it works more like a real sim.
* Properly install &cam_dead_sim in the device and periph structures
related to a SCSI bus, when deregistering the bus.
* Disallow the addition of new devices when deregistering a bus.
* NULL out periph->softc when freeing it.
Matthew Dillon [Fri, 18 Jul 2008 00:01:11 +0000 (00:01 +0000)]
Make some adjustments to the buffer cache:
* Retain B_ERROR instead of clearing it.
* Change B_ERROR's behavior. It no longer causes the buffer to be
invalidated on write.
* Change B_NOCACHE's behavior. It no longer causes the buffer to be
invalidated while the buffer is marked dirty.
* Code that was supposed to re-dirty a failed write buffer in brelse()
was not running because biodone() cleared the fields brelse() was
testing. Move the code to biodone().
* When attempting to reflush B_DELWRI|B_ERROR'd buffers, sleep a tick
to try to avoid a live-lock.
Matthew Dillon [Thu, 17 Jul 2008 23:56:23 +0000 (23:56 +0000)]
Give krateprintf() an initial burst capability if count is set to
a negative number like e.g. -5.
Matthew Dillon [Thu, 17 Jul 2008 23:55:24 +0000 (23:55 +0000)]
Code documentation only: Describe B_NOCACHE
Thomas Nikolajsen [Thu, 17 Jul 2008 21:38:07 +0000 (21:38 +0000)]
HAMMER can now be demand-loaded.
Thomas Nikolajsen [Thu, 17 Jul 2008 21:34:47 +0000 (21:34 +0000)]
Add missing space and newline to error message.
Sascha Wildner [Thu, 17 Jul 2008 11:23:23 +0000 (11:23 +0000)]
Start describing snapshots.
Sascha Wildner [Thu, 17 Jul 2008 10:11:58 +0000 (10:11 +0000)]
Fix MODULES_WITH_WORLD build.
Sascha Wildner [Thu, 17 Jul 2008 09:41:19 +0000 (09:41 +0000)]
Minor corrections.
Matthias Schmidt [Thu, 17 Jul 2008 09:24:00 +0000 (09:24 +0000)]
HEAD is now 2.1, so reflect that change for the man pages as well.
Matthew Dillon [Thu, 17 Jul 2008 01:15:59 +0000 (01:15 +0000)]
In DragonFly, gpt partitions look like slices in /dev, and we match the
slice number to the GPT index to avoid confusion.
Fix the reporting of the slice in 'gpt add' (it was off by 1).
Sascha Wildner [Thu, 17 Jul 2008 00:16:14 +0000 (00:16 +0000)]
Make HAMMER build and work as a module and extend hammer(5)'s SYNOPSIS
accordingly.
Sascha Wildner [Wed, 16 Jul 2008 23:09:04 +0000 (23:09 +0000)]
Add a calendar.dragonfly file to remind us that on July 16, 2003, DragonFly
was first announced, so the project just got 5 years old.
Noticed-by: Justin Sherrill <justin@shiningsilence.com> in his Digest
Matthew Dillon [Wed, 16 Jul 2008 21:38:10 +0000 (21:38 +0000)]
Add logic to warn of possible renames, and clearly state when failures may
be due to prior renames.
Change -h to -a (-a for 'all'), which is a more obvious option name.
Sascha Wildner [Wed, 16 Jul 2008 20:39:28 +0000 (20:39 +0000)]
Add some examples and move some stuff around.
Sascha Wildner [Wed, 16 Jul 2008 20:00:41 +0000 (20:00 +0000)]
Add a pointer to hammer(5) and fix some minor issues.
Matthew Dillon [Wed, 16 Jul 2008 18:30:59 +0000 (18:30 +0000)]
HAMMER 62/Many: Stabilization, performance, and cleanup
* Fix 'hammer synctid'. It was blocking until the next filesystem sync in
some cases. Also redo the flush sequencing for synctid so the inodes
are flushed in large groups instead of individually, improving performance.
* Fix a case where reclaimed inodes were sometimes not being reclaimed on
the backend in a timely fashion. There are still some performance issues
here.
* Fix a race in the buffer invalidation code that could cause an assertion.
* Remove a short-cut in hammer_checkspace() that was not taking into
account reserved big-blocks and allowing operations to exhaust all
free space on smaller medias and then assert, instead of returning ENOSPC.
* Clean up the flush_group append code by tracking the append point.
* Clean up documentation in the inode flush path.
* Allow the reblocker to dig deeper into available free space when run
with a low fill level (<= 20%).
Matthew Dillon [Wed, 16 Jul 2008 18:20:40 +0000 (18:20 +0000)]
Fix a lock leak in nfs_create(), tracked down from a crash dump and
possibly responsible for a pkgbox crash while rsync()ing over a
NFS mount.
Sascha Wildner [Wed, 16 Jul 2008 12:45:13 +0000 (12:45 +0000)]
Add a incomplete hammer(5) manual page.
It's intention is to give an introduction to the hammer file system
features along with examples, a la vkernel(7).
Thomas Nikolajsen [Wed, 16 Jul 2008 01:30:47 +0000 (01:30 +0000)]
Capitalize TAP and add some markup.
Thomas Nikolajsen [Wed, 16 Jul 2008 01:27:09 +0000 (01:27 +0000)]
Update `-t' flag; now it is always transaction-id.
Thomas Nikolajsen [Wed, 16 Jul 2008 01:25:23 +0000 (01:25 +0000)]
Add VKERNEL to FILES and make some paths a bit shorter.
Thomas Nikolajsen [Wed, 16 Jul 2008 01:02:07 +0000 (01:02 +0000)]
Add VKERNEL.
Thomas Nikolajsen [Wed, 16 Jul 2008 00:58:22 +0000 (00:58 +0000)]
Update newfs_hammer doc:
- sync usage() & newfs_hammer.8
- add a cross reference
Thomas Nikolajsen [Wed, 16 Jul 2008 00:53:48 +0000 (00:53 +0000)]
Update hammer doc:
- sync usage() & hammer.8
- reblock* percentage is 100%, correct a few places still saying 90%
- drop `-s' as it isn't used anymore
- drop doc for blockmap, es code is #if 0'ed
- add more description of pruning
- add more markup
- capitalize UUID
- spell out TID
- add a few more cross references
Thomas Nikolajsen [Tue, 15 Jul 2008 23:42:21 +0000 (23:42 +0000)]
Update mount_hammer doc:
- sync usage() & mount_hammer.8
- add missing \n to usage()
- rename transactionid to transaction-id to ease reading
- describe that special files can be `:' separated
- add some more cross references
Matthew Dillon [Tue, 15 Jul 2008 22:13:16 +0000 (22:13 +0000)]
HAMMER 61H/Many: Stabilization
* Fix a nasty uninitialized variable in hammer_btree_iterate_reverse().
Submitted-by: Johannes Hofmann <hofmann@blob.baaderstrasse.com>
Matthew Dillon [Tue, 15 Jul 2008 18:01:58 +0000 (18:01 +0000)]
HAMMER 61G/Many: Stabilization
* Fix a nasty uninitialized variable in hammer_btree_iterate().
gcc-4 missed the complex case and didn't complain about it.
Submitted-by: Johannes Hofmann <hofmann@blob.baaderstrasse.com>
Thomas Nikolajsen [Tue, 15 Jul 2008 17:04:35 +0000 (17:04 +0000)]
undo(1) doc fixes:
- sync usage() to undo.1
- improve wording a bit in a few places
Matthew Dillon [Tue, 15 Jul 2008 01:18:53 +0000 (01:18 +0000)]
Fix an issue where libthread_xu was not accepting the full priority
range returned by sched_get_priority_{min,max}(), causing firefox
to assert.
Reported-by: Jordan Gordeev <jgordeev@dir.bg>
Tested-by: walt <wa1ter@myrealbox.com>
Sascha Wildner [Mon, 14 Jul 2008 23:59:34 +0000 (23:59 +0000)]
Remove useless types(5) manpage.
Sascha Wildner [Mon, 14 Jul 2008 23:57:10 +0000 (23:57 +0000)]
Exclude acd* and fd* from the list of disks.
Matthew Dillon [Mon, 14 Jul 2008 22:22:40 +0000 (22:22 +0000)]
Fix a bug where mount_nfs would properly parse an IP address, but would
still fail if name resolution was down because it also tried to do a
reverse lookup on it.
Reported-by: Vincent Stemen <vince.dragonfly@hightek.org>
Matthew Dillon [Mon, 14 Jul 2008 22:16:35 +0000 (22:16 +0000)]
Fix a bug in vmntvnodescan() revealed by the recent NFS sync fix. The
function can improperly return -1 if the last element scanned is skipped
by the fastfunc.
Matthew Dillon [Mon, 14 Jul 2008 20:28:07 +0000 (20:28 +0000)]
HAMMER Utilities: Sync with 61E
* Implement hammer iostats
Matthew Dillon [Mon, 14 Jul 2008 20:27:54 +0000 (20:27 +0000)]
HAMMER 61E/Many: Features
* Implement hammer iostats.
Matthew Dillon [Mon, 14 Jul 2008 17:45:49 +0000 (17:45 +0000)]
NFS performance fixes.
* sync on an NFS mount was a big NOP due to a silly bug.
* utimes (setattr w/ mtime-changed) was unconditionally flushing the file,
causing programs such as cpdup, rsync, rdist, and tar xp to sync on each
file.
change it so it does not unconditionally flush the file.
Matthew Dillon [Mon, 14 Jul 2008 04:01:45 +0000 (04:01 +0000)]
2.0 Release Engineering:
* Post-branch adjustments to HEAD (2.1)
Matthew Dillon [Mon, 14 Jul 2008 03:50:00 +0000 (03:50 +0000)]
2.0 Release Engineering:
* cvsup file, slip tag target
Matthew Dillon [Mon, 14 Jul 2008 03:46:52 +0000 (03:46 +0000)]
2.0 Release Engineering:
* Bump DragonFly_version
* Bump HEAD sub-vers
Matthew Dillon [Mon, 14 Jul 2008 03:21:34 +0000 (03:21 +0000)]
HAMMER Utilities: Features
* hammer show: report the CRC in verbose mode.
Matthew Dillon [Mon, 14 Jul 2008 03:20:49 +0000 (03:20 +0000)]
HAMMER 61F/Many: Stabilization w/ simultanious pruning and reblocking
* BUG FIX: When doing direct-read check to see if any device buffers
are aliasing the disk block and flush any we find which are dirty.
This ensures that reblocked data gets to disk before a direct-read
tries to read them FROM the disk.
* BUG FIX: Fix a bug introduced in a recent commit where the flusher
wlll not always completely flush the UNDO FIFO or completely flush
all meta-data, resulting in a rollback after a normal umount/mount.
* BUG FIX: Direct-writes queue I/O independant of the in-memory record.
When the backend flusher flushes the record, making it available in the
B-Tree, make sure that the indepent I/O has completed. Otherwise
a later reblocking operation might read the media before the direct-write
has actually completed.
* BUG FIX: In-memory records are not subject direct-IO, since their data
is not yet on the media.
* BUG FIX: Do not allow mount to succeed unless all volumes have been found.
(Reported-by: Sascha Wildner <saw@online.de>)
* BUG FIX: The bd_heatup() call in the reblocker was in the wrong place,
potentially causing the cursor to shift unexpectedly.
* Reorient some of the buffer invalidation code by enhancing
the reservation code.
* Add read CRC verification logic for some direct-reads, but comment it out
because the VM system's bogus-page replacement breaks it.
Matthew Dillon [Mon, 14 Jul 2008 03:09:00 +0000 (03:09 +0000)]
Kernel support for HAMMER:
* Add another type to the bio->bio_caller_info1 union
* Add two new flags to getblk(), used by the cluster code.
GETBLK_SZMATCH - Tell getblk() to fail and return NULL if a
pre-existing buffer's size does not match
the requested size (this prevents getblk()
from doing a potentially undesired bwrite()
sequence).
GETBLK_NOWAIT - Tell getblk() to use a non-blocking lock.
* pop_bio() now returns the previous BIO (or NULL if there is no previous
BIO). This allows HAMMER to chain bio_done()'s
* Fix a bug in cluster_read(). The cluster code's read-ahead at the
end could go past the caller-specified limit and force a block to
the wrong block size.
Matthew Dillon [Mon, 14 Jul 2008 00:09:42 +0000 (00:09 +0000)]
Fix an asf core dump.
Submitted-by: ejc <eric.j.christeson@gmail.com>
Sascha Wildner [Sun, 13 Jul 2008 22:18:18 +0000 (22:18 +0000)]
Sync the 'hammer show' description with reality.
Sascha Wildner [Sun, 13 Jul 2008 22:14:16 +0000 (22:14 +0000)]
Uniformly refer to 'B-tree'.
Sepherosa Ziehau [Sun, 13 Jul 2008 11:02:50 +0000 (11:02 +0000)]
Unload the bus dmamap, which was successfully loaded
Sascha Wildner [Sun, 13 Jul 2008 10:55:05 +0000 (10:55 +0000)]
We're building live CDs using the installer in base for some time now,
so they don't need to identify anymore as being built with it.
Nicolas Thery [Sun, 13 Jul 2008 10:28:51 +0000 (10:28 +0000)]
Fix deadlock occuring when booting vkernel from gdb. One lwp in the vkernel
sends a signal to another one and is preempted by the signal receiving one in
userexit(). As the vkernel is traced, the vkernel process is stopped and the
receiving lwp stops too. The emitting lwp then resumes and blocks later on a
condition variable. The gdb process sleeps on wait(2) which never completes
because the emitting lwp is not stopped.
To prevent this, stop lwps in userexit(), after lwkt_reschedule, if their
owning process is stopped.
Reported-by: Simon Schubert <corecode@fs.ei.tum.de>
Matthew Dillon [Sun, 13 Jul 2008 09:32:48 +0000 (09:32 +0000)]
HAMMER 61E/Many: Stabilization, Performance
* PERFORMANCE: hammer_sync_inode() was generating a new transaction id
for each inode, causing hammer_btree_do_propagation() to have to
modify B-Tree nodes all the way to root on a per-file basis when
syncing a rm -rf.
Change the code to use the flusher's transaction id so all inodes
bundled into the same flush group use the same transaction id.
* BUG FIX: The reblocker was able to blow out the buffer cache with
dirty data buffers. Even though HAMMER allows these buffers to be
flushed to the disk at any time by the kernel, calls to bwillwrite()
are still needed to prevent a buffer cache deadlock.
Sepherosa Ziehau [Sun, 13 Jul 2008 03:57:41 +0000 (03:57 +0000)]
Increate receive max coalesced bds to 80 to prevent system from being
livelocked when 64bytes packets are injected @1.48Mpps.
It's RX side interrupt moderation logic is quite similar to et(4)'s:
(# recved packets > recv max coalesced bds) || (ticks > recv coalescing ticks)
# The 5750A1 I have tested could only sink packets @1.26Mpps
Matthew Dillon [Sun, 13 Jul 2008 03:37:43 +0000 (03:37 +0000)]
Use a 64 bit quantity to collect file size data instead of
32 bits, fixing overflows in the printed output.
Requested-by: "Trevor Kendall" <trevorjkendall@gmail.com>
Sascha Wildner [Sun, 13 Jul 2008 02:02:40 +0000 (02:02 +0000)]
perror() will print its own colon.
Matthew Dillon [Sun, 13 Jul 2008 01:12:41 +0000 (01:12 +0000)]
HAMMER 61G/Many: Stabilization of new flush_group code
* The mirroring, reblocking, and pruning code are now more robust in
checking that too many meta-data buffers have not built up.
* Fix a bug in the flusher (today's flusher work) where pure meta-data
changes to the media were not being flushed unless there was also a
modified inode or two to flush.
Sascha Wildner [Sun, 13 Jul 2008 00:56:06 +0000 (00:56 +0000)]
Typo fixing & minor cleanup.
Matthew Dillon [Sat, 12 Jul 2008 23:55:22 +0000 (23:55 +0000)]
HAMMER 61F2/Many: Fix bug in last commit
* ip -> dip (pun intended)
Matthew Dillon [Sat, 12 Jul 2008 23:47:13 +0000 (23:47 +0000)]
HAMMER 61F/Many: Stabilization
* Fix a bug triggered by rm -rf where HAMMER was failling to wait for
reclaimed inodes to drain, allowing a build-up that would result in
a kmalloc() pool-full panic.
Add a required call to hammer_inode_waitreclaims() in the dounlink
code. Because this code acquires and releases inodes without having
to mess around with related vnodes, it bypassed the reclaim checks in
the vnode path.
Reported-by: Michael Neumann <mneumann@ntecs.de>
Matthew Dillon [Sat, 12 Jul 2008 23:05:30 +0000 (23:05 +0000)]
HAMMER Utilities: Cleanup
* Cleanup the printfs for mirror-read, mirror-write, and mirror-copy.
Matthew Dillon [Sat, 12 Jul 2008 23:04:50 +0000 (23:04 +0000)]
HAMMER 61E/Many: Stabilization, Performance
* The UNDO FIFO could get over-full, causing an assertion. This was because
certain load tests could cuase directories to end up with tens of
thousands of directory entries and all of them were being flushed in
a single flush group.
Rewrite the flush group infrastructure to fix the issue. Instead of
having a two-stage flush we now have flush compartmentalization with
the new hammer_flush_group structure. Flushes can thus be broken down
into transactions that don't blow out the UNDO FIFO.
* Improve flush performance by quite a bit. The new infrastructure
generates fewer B-Tree conflicts and appears to flush the work more
smoothly, probably owing to the fact that the upper size of each
flush group is now bounded.